如何在视图模式下将 gridcontrol 中的单元格绑定到 属性

How to bind a cell in a gridcontrol to a property in view mode

<dxg:GridControl x:Name="m_grid" SelectionMode="Row" AutoGenerateColumns="AddNew" ItemsSource="{Binding Path=MyDT,Mode=TwoWay}">
    <dxg:GridControl.Columns>
        <dxg:GridColumn x:Name="col_A" AllowEditing="False" FieldName="A" />
        <dxg:GridColumn x:Name="col_B" AllowEditing="False" FieldName="B" />
        <dxg:GridColumn x:Name="col_C" AllowEditing="False" FieldName="C" />
        <dxg:GridColumn x:Name="col_D" AllowEditing="False" FieldName="D" />
        <dxg:GridColumn x:Name="col_E" AllowEditing="True" FieldName="E" />
    </dxg:GridControl.Columns>
</dxg:GridControl>

我在使用 MVVM 设计电池开发的 wpf 应用程序中有一个 Grid 控件。我的 GridControl 绑定到视图模型 "MyDT" 中的 DataTable。现在 "MyDT" 中的一列是 bool 类型,因此 GridControl 将其转换为复选框。这是我的 GridControl 中唯一可编辑的列,其余列不可编辑,我已在 xaml 中确定。我需要做的是在 GridControl 的任何行中的复选框为 ticked/unticked 时触发一个事件,方法是绑定到我的视图模型中的 属性。 xaml 会如何变化?

一个属性已经绑定到你的复选框,也就是你的dt

中的属性

如果您想特意处理检查事件.. 添加一个 checkBoxColumn 或模板化列而不是网格列..

这样您就可以访问已检查的事件或关联的命令。

假设您的 ViewModel

中有一个名为 CheckBoxCommandICommand
<dxg:GridColumn>
    <dxg:GridColumn.CellTemplate>
        <DataTemplate>
            <dxe:CheckEdit 
                Command="{Binding Path=View.DataContext.CheckBoxCommand}" 
                CommandParameter="{Binding RowData.Row}"/>
        </DataTemplate>
    </dxg:GridColumn.CellTemplate>
</dxg:GridColumn>

请注意,命令参数实际上是您的模型,因此在您的 ViewModel 中,您可以使用如下命令:

private ICommand _checkBoxCommand;
public ICommand CheckBoxCommand
{
    get
    {
        return _checkBoxCommand = _checkBoxCommand ?? new RelayCommand((param) =>
            {
                var model = param as Model;

                // Do whatever with the model.

            });
    }
}