以GridViewColumn中的复选框为中心?

Son*_*Boy 3 data-binding wpf styles

我正在努力让我的CheckBoxes适当地集中在我的内心GridViewColumn.

我已经Style为我的CheckBoxes 定义了一个:

<Style TargetType="{x:Type CheckBox}" x:Key="DataGridCheckBox">
    <Setter Property="HorizontalAlignment" Value="Center" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="IsEnabled" Value="False" />
    <Setter Property="Margin" Value="4" />
    <Setter Property="VerticalAlignment" Value="Center" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type GridViewColumn}},Path=ActualWidth}" />
</Style>
Run Code Online (Sandbox Code Playgroud)

我的CheckBoxes被添加到GridViewColumn使用DataTemplate这样的:

<GridViewColumn Header="Comment">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <CheckBox Style="{StaticResource DataGridCheckBox}" IsChecked="{Binding PropertyItem.Comment, Converter={StaticResource booleanConverter}, ConverterParameter='string'}"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>
Run Code Online (Sandbox Code Playgroud)

但我CheckBox遇到的问题是es保持左对齐(即使调整列的大小).

有任何想法吗?

先谢谢,
桑尼

编辑: 我一直CheckBox在一个空白窗口搞乱,我认为问题可能与CheckBox控件有关.如果我做得很宽CheckBox,我似乎仍然无法CheckBox让它的一部分在其内部对齐.它总是想要左上角.根据名称,ContentAlignment属性似乎只是对齐内容.

Fre*_*lad 11

尝试将Horizo​​ntalContentAlignment设置为Stretch for ListViewItem

<ListView ...>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    <ListView.ItemContainerStyle>
    <!-- ... -->
</ListView>
Run Code Online (Sandbox Code Playgroud)

更新

这是一个仅限Xaml示例,它以CheckBoxes为中心.粘贴并尝试:)

<Grid>
    <ListView>
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch" />
            </Style>
        </ListView.ItemContainerStyle>
        <ListView.Resources>
            <Style TargetType="{x:Type CheckBox}" x:Key="DataGridCheckBox">
                <Setter Property="HorizontalAlignment" Value="Center" />
                <Setter Property="HorizontalContentAlignment" Value="Center" />
                <Setter Property="IsEnabled" Value="False" />
                <Setter Property="Margin" Value="4" />
                <Setter Property="VerticalAlignment" Value="Center" />
                <Setter Property="VerticalContentAlignment" Value="Center" />
                <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type GridViewColumn}},Path=ActualWidth}" />
            </Style>
        </ListView.Resources>
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Comment">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Style="{StaticResource DataGridCheckBox}" IsChecked="True"/>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
        <ListViewItem>Item1</ListViewItem>
        <ListViewItem>Item2</ListViewItem>
        <ListViewItem>Item3</ListViewItem>
    </ListView>
</Grid>
Run Code Online (Sandbox Code Playgroud)