通过ViewModel禁用特定的DataGridCheckBoxColumn单元格

时间:2015-10-27 11:38:14

标签: wpf mvvm datagrid

我的MVVM项目有这个ViewModel:

class ListViewModel : ViewModelBase {
    public ObservableCollection<ListItemviewModel> Items { ... }
}
class ListItemViewModel : ViewModelBase {
    public String  Name      { ... }
    public Boolean IsChecked { ... }
    public Boolean IsEnabled { ... }
}

编写XAML似乎很简单:

<DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn     Header="Name"       Binding="{Binding Name}" />
        <DataGridCheckBoxColumn Header="Is checked" Binding="{Binding IsChecked}" />
</DataGrid>

但是,当ListItemViewModel的{​​{1}}属性为IsEnabled时,如果该行中的false个单元格被禁用,我该如何理解?

我尝试设置DataGridCheckBoxColumn(并将IsReadOnly={Binding IsDisabled}属性添加到IsDisabled,但无效) - 我发现这会禁用/启用整个列,而不是单个单元格。

我也试过这些说明(How to disable a cell in a DataGrid while binding to an ObservableCollection):

ListItemViewModel

但是这没有效果,并且“输出”窗口中没有显示绑定错误。

1 个答案:

答案 0 :(得分:6)

事实证明我与(How to disable a cell in a DataGrid while binding to an ObservableCollection)相关联的问题几乎是正确的,但XAML有点像货物一样。正确的XAML仅仅是:

<DataGridCheckBoxColumn.CellStyle>
    <Style TargetType="DataGridCell">
        <Setter Property="IsEnabled" Value="{Binding IsEnabled}" />
    </Style>

排序!