如何使样式DataGridCheckBoxColumn尊重DataGrid.IsReadonly?

时间:2013-09-03 19:41:30

标签: wpf datagrid

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

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

有人可以让我知道如何设置复选框列的样式,以便它尊重其父网格数据的IsReadonly吗?任何背后的理论也将受到赞赏。

这是我如何应用风格:

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

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

1 个答案:

答案 0 :(得分: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始终是ReadOnly,那么我建议您跳过触发器并直接使用setter。