2

DataGrid.IsReadonly绑定了一个根据条件更改的属性。DataGrid包含一个列,我必须设置它的DataGridCheckBox样式才能使其在单元格中垂直居中。

但是,在应用样式后,复选框列不尊重父项的IsReadonly值。也就是说,无论其值如何,checkbox都可以单击和更改。我看过很多帖子处理类似的情况,但找不到可靠的解决方案。

有人可以让我知道如何设置复选框列的样式,以使其尊重其父 griddata 的 IsReadonly 吗?它背后的任何理论也将不胜感激。

这就是我应用样式的方式:

<Style x:Key="CenterStyleCB" TargetType="{x:Type CheckBox}">
      <Setter Property="HorizontalAlignment" Value="Center" />
      <Setter Property="VerticalAlignment" Value="Center" />
</Style>

<DataGridCheckBoxColumn ...  ElementStyle="{StaticResource CenterStyleCB}" />
4

1 回答 1

0

将以下代码添加到您的样式中:

<Style.Triggers>
    <DataTrigger Binding="{Binding Path=Column.IsReadOnly, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type DataGridCell}}}" Value="True">
        <Setter Property="IsHitTestVisible" Value="False" />
    </DataTrigger>
</Style.Triggers>

如果您的 DataGrid 始终是只读的,那么我建议您跳过触发器并直接使用 setter。

于 2014-03-07T18:58:55.480 回答