如何在视图模式下将 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
中有一个名为 CheckBoxCommand
的 ICommand
<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.
});
}
}
<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
CheckBoxCommand
的 ICommand
<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.
});
}
}