zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    手机端学习助手的说明书需求以及团队PM选择
    对其他组的作品的评审意见
    项目介绍
    beta版项目总结
    Beta版说明书
    Alpha版会议总结
    第一阶段绩效评估
    今日事意见汇总
    Alpha版使用说明
    评审建议
  • 原文地址:https://www.cnblogs.com/runningRain/p/13924583.html
Copyright © 2011-2022 走看看