如何将 DataGrid 列 属性 设置为与绑定值相同?
How to set DataGrid column property same as binding value?
我怎么可以像这样为我的 DataGrid 设置绑定:
<DataGridCheckBoxColumn Header="Include" Binding="{Binding isSelected}"/>
但是当我添加“IsReadOnly”时
<DataGridCheckBoxColumn Header="Include" IsReadOnly="{Binding isSelected}" Binding="{Binding isSelected}"/>
它在“IsReadOnly”上警告我没有找到数据上下文。
这可能是元素样式的问题。此元素是否可以作为其呈现内容的某些部分的命中测试结果返回。
尝试将 ElementStyle
元素添加到您的 DataGridCheckBoxColumn
<DataGridCheckBoxColumn Header="Include" IsReadOnly="{Binding isSelected}" ElementStyle="{StaticResource ReadOnlyCheckBoxStyle}" Binding="{Binding isSelected}"/>
以及以下样式
<Style x:Key="ReadOnlyCheckBoxStyle" TargetType="{x:Type CheckBox}">
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
IsReadOnly
指的是所有item,所以对应的data context比Binding
高一级,指的是你table中的具体对象。
因此,您需要像这样手动定义单元格模板以专门禁用某些单元格:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{Binding isSelected, Mode=TwoWay}"
IsEnabled="{Binding isSelected}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
另请参阅 this question,它基本上描述了相同的问题。
我怎么可以像这样为我的 DataGrid 设置绑定:
<DataGridCheckBoxColumn Header="Include" Binding="{Binding isSelected}"/>
但是当我添加“IsReadOnly”时
<DataGridCheckBoxColumn Header="Include" IsReadOnly="{Binding isSelected}" Binding="{Binding isSelected}"/>
它在“IsReadOnly”上警告我没有找到数据上下文。
这可能是元素样式的问题。此元素是否可以作为其呈现内容的某些部分的命中测试结果返回。
尝试将 ElementStyle
元素添加到您的 DataGridCheckBoxColumn
<DataGridCheckBoxColumn Header="Include" IsReadOnly="{Binding isSelected}" ElementStyle="{StaticResource ReadOnlyCheckBoxStyle}" Binding="{Binding isSelected}"/>
以及以下样式
<Style x:Key="ReadOnlyCheckBoxStyle" TargetType="{x:Type CheckBox}">
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
IsReadOnly
指的是所有item,所以对应的data context比Binding
高一级,指的是你table中的具体对象。
因此,您需要像这样手动定义单元格模板以专门禁用某些单元格:
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<CheckBox IsChecked="{Binding isSelected, Mode=TwoWay}"
IsEnabled="{Binding isSelected}"/>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
另请参阅 this question,它基本上描述了相同的问题。