IsEnabled
속성을 컨텍스트 menuitem에 바인딩하려고합니다. 컨텍스트 메뉴는 Devexpress GridControl.View
에 있습니다.GridControl.View에서 IsEnabled 속성 바인딩
문제는 DataContext에 있다고 가정합니다. barbutton 항목은 모눈의 DataContext에서 HasPermissionDelete
속성을 검색하고 있습니다. 그러나 이것은 뷰 모델의 데이터 인터페이스가 아닙니다. 내 자산 HasPermissionDelete
이 ViewModel에 있습니다.
저는 caliburn.micro를 사용하고 있습니다.
이 바인딩을 수정하는 데 도움을 줄 수 있습니까?
내 XAML 코드 :
는<dxg:GridControl.View>
<dxg:TableView x:Name="gridTable" AllowSorting="True" NavigationStyle="Row" MultiSelectMode="Row" AutoWidth="True" AllowEditing="False" AllowFilterEditor="True" AllowDrop="True" AllowGrouping="True" ShowGroupPanel="False" AllowMoveColumnToDropArea="True" SelectedRowsSource="{Binding SelectedUsers}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="RowDoubleClick">
<cal:ActionMessage MethodName="Edit" />
</i:EventTrigger>
<i:EventTrigger EventName="Loaded">
<cal:ActionMessage MethodName="InitializePrintableSource" >
<cal:Parameter Value="{Binding ElementName=gridTable}"></cal:Parameter>
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
<dxg:TableView.RowCellMenuCustomizations>
<dxb:BarButtonItem x:Name="btnDelete" Content="{lex:LocText Translations:Delete, Assembly=Prosa.Common.Modules.UserManagement}" IsEnabled="{Binding Path=HasPermissionDelete}"/>
</dxg:TableView.RowCellMenuCustomizations>
</dxg:TableView>
</dxg:GridControl.View>
답변 해 주셔서 감사합니다. 귀하의 가정은 옳습니다. 그리드에 있어요. 불행히도 바인딩과 그리드 명명을 업데이트하면 결과에 다음과 같은 오류가 발생합니다. System.Windows.Data 오류 : 4 : 'ElementName = Root'참조로 바인딩 소스를 찾을 수 없습니다. BindingExpression : Path = DataContext.HasPermissionDelete; DataItem = null; 대상 요소는 'BarButtonItem'(HashCode = 56096403)입니다. 대상 속성이 'IsEnabled'(유형 '부울') 도와 줄 수 있습니까? – bitsmuggler
대문자 R을 가진 "Root"엘리먼트에서 오류가 발생하는 것을 볼 수 있습니다. 바인딩 표현은 괜찮아 보입니다 ... 바인딩이 실패 할 때 항상 다음 사항을 확인하십시오 : 1. 철자 (대소 문자를 구별하고 인텔리 센스가 도움이되지 않습니다. 속성 또는 요소 이름), 2. 바운드 속성은 공용 get/set 어커 스터와 공용입니다. 3. 컬렉션 인 경우 초기화되고 무언가가 포함되어 있는지 확인하십시오. 내게 알려줘, 안부. – Hannish
도움 주셔서 감사합니다. 불행하게도, 캐피탈 R이 아니 었습니다. 아마 mvvm devex/caliburn-problem이 있다고 가정합니다. 이제는 명령을 사용하고 있습니다 (사용/사용 안함이 더 좋습니다). 내 새로운 바인딩은 다음과 같습니다. Command = "{바인딩 경로 = (dxg : GridPopupMenu.GridMenuInfo) .View.DataContext.EditExecutor.EditCmd, RelativeSource = {RelativeSource Self}}"/> – bitsmuggler