我嘗試綁定上下文菜單項中的IsEnabled
屬性。上下文菜單位於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:路徑= DataContext.HasPermissionDelete;的DataItem = NULL;目標元素是'BarButtonItem'(HashCode = 56096403);目標屬性是'IsEnabled'(類型'布爾') 你能幫我嗎? – bitsmuggler
我發現你在錯誤中使用了大寫的「Root」元素。綁定表達式看起來沒問題...當綁定失敗時總是確保這些東西:1.拼寫(一切都區分大小寫,intellisense並沒有幫助屬性或元素名稱),2.綁定屬性是公開的獲取/設置訪問器,3.如果它是一個集合,請確保它已被初始化並且它包含某些東西。讓我知道,問候。 – Hannish
感謝您的幫助。不幸的是,它不是Capital R.我認爲這可能是一個mvvm devex/caliburn-問題。現在我正在使用命令(更適合啓用/禁用)。我的新綁定是:Command =「{Binding Path =(dxg:GridPopupMenu.GridMenuInfo).View.DataContext.EditExecutor.EditCmd,RelativeSource = {RelativeSource Self}}」/> – bitsmuggler