DataGridCheckBoxColumn

DataGridCheckBoxColumn

我需要将DataGridCheckBoxColumn垂直居中。由于我没有在DataGridCheckBoxColumn中找到属性,因此我应用了ElementStyle。但是,应用此样式后,尽管我的CheckBox(整个ReadOnlyDataGrid)和Datagrid本身都设置为ReadOnly,但我的DataGridCheckBoxColumn再次变得可检查。

如何创建保持其CheckBox状态的垂直居中的ReadOnly?这是我的代码:

<DataGrid IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridCheckBoxColumn Header="Test" IsReadOnly="True" Binding="{Binding MyBinding}">
            <DataGridCheckBoxColumn.ElementStyle>
                <Style>
                    <Setter Property="FrameworkElement.Margin" Value="0,1,0,0" />
                    <Setter Property="FrameworkElement.VerticalAlignment" Value="Center" />
                    <Setter Property="FrameworkElement.HorizontalAlignment" Value="Center" />
                </Style>
            </DataGridCheckBoxColumn.ElementStyle>
        </DataGridCheckBoxColumn>
    </DataGrid.Columns>
</DataGrid>

最佳答案

ElementStyle上设置DataGridCheckBoxColumn时,应在您的FrameworkElement.IsHitTestVisible="False"中包括 Style :

<Setter Property="FrameworkElement.IsHitTestVisible" Value="False"/>

同样,如果您将TargetType="CheckBox"添加到Style中,则不必再为每个FrameworkElement重复Setter了:
<DataGridCheckBoxColumn.ElementStyle>
    <Style TargetType="CheckBox">
        <Setter Property="Margin" Value="0,1,0,0" />
        <Setter Property="VerticalAlignment" Value="Center" />
        <Setter Property="HorizontalAlignment" Value="Center" />
        <Setter Property="IsHitTestVisible" Value="False"/>
    </Style>
</DataGridCheckBoxColumn.ElementStyle>

10-05 21:41