如何将 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,它基本上描述了相同的问题。