RowCellMenuCustomizations 实现 Command 绑定
作者:互联网
给GridControl的行数据单元格添加菜单项,并通过Command绑定的方式实现菜单点击动作触发:
<dxg:GridControl x:Name="mainGrid" ItemsSource="{Binding TableDataSource}"> <dxg:GridColumn Header="A" FieldName="A"/> <dxg:GridColumn Header="B" FieldName="B"/> <dxg:GridColumn Header="C" FieldName="C"/> <dxg:GridColumn Header="D" FieldName="D"/> <dxg:GridColumn Header="E" FieldName="E"/> <dxg:GridControl.View> <dxg:TableView x:Name="tvTable" ShowGroupPanel="False" AllowColumnFiltering="False" AllowedGroupFilters="None" AllowGrouping="False" ShowIndicator="False" AllowSorting="False" AllowEditing="False" AllowFilterEditor="False"> <dxg:TableView.RowCellMenuCustomizations> <dxb:BarButtonItem Name="DataHeader" Content="数据头" Command="{Binding Path=(dxg:DataControlBase.ActiveView).DataContext.SetDataHeaderCommand, RelativeSource={RelativeSource Self}}" CommandParameter="{Binding ElementName=tvTable, Path=FocusedRowHandle}" > </dxb:BarButtonItem> <dxb:BarButtonItem Name="DataBegin" Content="数据开始" Command="{Binding Path=DataContext.SetDataBeginCommand,ElementName=mainGrid}" CommandParameter="{Binding ElementName=tvTable, Path=FocusedRowHandle}"> </dxb:BarButtonItem> </dxg:TableView.RowCellMenuCustomizations> </dxg:TableView> </dxg:GridControl.View> </dxg:GridControl>
上面的两个命令绑定分别使用两种方式实现DataContext的绑定:
注:前提条件是:待绑定的Command和需要寻找的元素的DataContext是同一个才适用。
1. 通过 DataControlBase.ActiveView 附加属性来将当前命令的上下文绑定到 tvTable 的数据上下文上;
Command="{Binding Path=(dxg:DataControlBase.ActiveView).DataContext.SetDataHeaderCommand, RelativeSource={RelativeSource Self}}"
2. 通过 定义 ElementName 的当时,寻找指定元素的DataContext作为数据上下文绑定的方式:
Command="{Binding Path=DataContext.SetDataBeginCommand,ElementName=mainGrid}"
方式二也是一般常用方式,适用于多层级的子元素的数据上下文绑定。
注意:不管是方式一还是方式二,“DataContext” 都不能少,否则会提示找不到对应的 Command;
标签:DataContext,ActiveView,方式,绑定,Command,上下文,RowCellMenuCustomizations 来源: https://www.cnblogs.com/runningRain/p/13924583.html