我是一名新的WPF首发,我在完成一件小事时遇到了麻烦。
我有一个具有ObservableCollection的viewModel 订单和那有两个道具
但是,当Orders / EnableOrder为false时,不会禁用该复选框。
<include layout="@layout/XML2"/>
当我像下面的
那样硬编码False时,它会起作用
<DataGrid ItemsSource="{Binding Orders}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsSelected}">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="IsEnabled" Value="{Binding Orders/EnableOrder}" />
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
此外,由于在XAML intellisense中看不到EnableOrder,因此我无法指定绑定。
<DataGrid ItemsSource="{Binding Orders}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsSelected}">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="IsEnabled" Value="False" />
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
请注意,我在网格中有其他简单的DataGridTextColumn绑定,绑定工作没有任何问题
答案 0 :(得分:1)
我认为绑定是错误的。请查看以下代码。还要检查输出窗口是否存在绑定错误。
<DataGrid ItemsSource="{Binding Orders}">
<DataGrid.Columns>
<DataGridCheckBoxColumn Binding="{Binding IsSelected}">
<DataGridCheckBoxColumn.CellStyle>
<Style TargetType="DataGridCell">
<Setter Property="IsEnabled" Value="{Binding EnableOrder}" />
</Style>
</DataGridCheckBoxColumn.CellStyle>
</DataGridCheckBoxColumn>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:0)
复制评论作为答案,因为OP发现它起作用:
我认为intellisense不会启动EnableOrder,因为你处于Style中并且Style可能适用于可能具有不同DataContexts的多个项目。因此,如果您绑定到EnableOrder,即使没有任何智能感知,您仍然可以构建和运行,如果是这样,它会起作用吗?