我的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
但是这没有效果,并且“输出”窗口中没有显示绑定错误。
答案 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>
排序!