Pet*_*ete 0 .net data-binding wpf binding
我有一个网格,位于名为 MediatedUserControl 的用户控件派生类内。我添加了一个上下文菜单来让用户删除一个项目,但我一直无法弄清楚如何将命令绑定到我的命令属性。我正在使用 MVVM,并且我的视图模型实现了一个名为 DeleteSelectedItemCommand 的公共 ICommand 属性。
但是,当显示视图时,我在输出窗口中收到以下消息:
System.Windows.Data 错误:4:无法找到引用“RelativeSource FindAncestor、AncestorType='BRO.View.MediatedUserControl”、AncestorLevel='1'' 进行绑定的源。BindingExpression:Path=DataContext.DeleteSelectedItemCommand; 数据项=空;目标元素是“BarButtonItem”(HashCode=6860584);目标属性是“Command”(类型“ICommand”)
我觉得我通常可以很好地处理这样的绑定,但无法弄清楚我在这里缺少什么。感谢您的任何帮助,您可以提供。
<dxg:GridControl HorizontalAlignment="Left" Margin="12,88,0,0" x:Name="gridControl1" VerticalAlignment="Top" Height="500" Width="517" DataSource="{Binding ItemList}" BorderBrush="{StaticResource {x:Static SystemColors.ActiveBorderBrushKey}}" ShowBorder="True" Background="{StaticResource {x:Static SystemColors.ControlLightBrushKey}}" UseLayoutRounding="False" DataContext="{Binding}">
<dxg:GridControl.Columns>
<dxg:GridColumn FieldName="Code" Header="Code" Width="107" />
<dxg:GridColumn FieldName="Name" Header="Item" Width="173" />
<dxg:GridColumn FieldName="PricePerItem" Header="Unit Price" Width="70">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="N2" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
<dxg:GridColumn FieldName="Quantity" Header="Qty" Width="50" AllowEditing="True" />
<dxg:GridColumn FieldName="TotalPrice" Header="Total Price" Width="90">
<dxg:GridColumn.EditSettings>
<dxe:TextEditSettings DisplayFormat="N2" />
</dxg:GridColumn.EditSettings>
</dxg:GridColumn>
</dxg:GridControl.Columns>
<dxg:GridControl.View>
<dxg:TableView ShowIndicator="False" ShowGroupPanel="False" MultiSelectMode="Row" AllowColumnFiltering="False" AllowBestFit="False" AllowFilterEditor="False" AllowEditing="False" AllowGrouping="False" AllowSorting="False" AllowResizing="False" AllowMoving="False" AllowMoveColumnToDropArea="False" AllowDateTimeGroupIntervalMenu="False" >
<dxg:TableView.RowCellMenuCustomizations>
<dxb:BarButtonItem Name="deleteRowItem" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=view:MediatedUserControl, AncestorLevel=1}, Path=DataContext.DeleteSelectedItemCommand}">
</dxb:BarButtonItem>
</dxg:TableView.RowCellMenuCustomizations>
</dxg:TableView>
</dxg:GridControl.View>
Run Code Online (Sandbox Code Playgroud)
我解决了这个问题,我想这与它是一个弹出菜单,因此不在窗口层次结构中有关。为此,DevExpress 提供了一种返回方式:
Command="{Binding Path=(dxg:GridPopupMenu.GridMenuInfo).View.DataContext.DeleteSelectedItemCommand, RelativeSource={RelativeSource Self}}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1786 次 |
| 最近记录: |