ListView.GridViewColumn对齐中的控件

sea*_*717 10 wpf

我有以下WPF ListView:

    <ListView Grid.Column="2" Grid.Row="1" Margin="0,53,12,6" 
Name="lvwProperties" 
ItemsSource="{Binding Path=SelectedPropertyItems, Mode=TwoWay}" 
Grid.ColumnSpan="2">

        <ListView.View >

                        <GridView>
                            <GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=PropertyName, Mode=TwoWay}" Width="130" />
                            <GridViewColumn Header="Is Mandatory" Width="90"  >

                                <GridViewColumn.CellTemplate>

                                    <DataTemplate>

                                        <CheckBox IsChecked="{Binding Path=IsMandatory, Mode=TwoWay}" HorizontalAlignment="Center" />

                                    </DataTemplate>

                                </GridViewColumn.CellTemplate>

                            </GridViewColumn>

                        </GridView>
                    </ListView.View>
                </ListView>
Run Code Online (Sandbox Code Playgroud)

我想在第二个GridColumn中使CheckBox对齐中心.设置HorizontalAlignment="Center"似乎没有办法.如何在XAML中实现这一点???

Zam*_*oni 19

要将内容集中在ListView中,您需要将ListView.ItemContainerStyle设置为具有Stretch的水平对齐方式,如下所示:

<ListView Grid.Column="2" Grid.Row="1" Margin="0,53,12,6" Name="lvwProperties"  
          ItemsSource="{Binding Path=SelectedPropertyItems, Mode=TwoWay}"  
          Grid.ColumnSpan="2"> 
    <ListView.ItemContainerStyle>
       <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
       </Style>
    </ListView.ItemContainerStyle>
    <ListView.View> 
        <GridView> 
            <GridViewColumn Header="Property" DisplayMemberBinding="{Binding Path=PropertyName, Mode=TwoWay}" Width="130" /> 
            <GridViewColumn Header="Is Mandatory" Width="90"  > 
               <GridViewColumn.CellTemplate> 
                   <DataTemplate> 
                       <CheckBox IsChecked="{Binding Path=IsMandatory, Mode=TwoWay}" HorizontalAlignment="Center" /> 
                   </DataTemplate> 
               </GridViewColumn.CellTemplate> 
            </GridViewColumn> 
        </GridView> 
    </ListView.View> 
</ListView> 
Run Code Online (Sandbox Code Playgroud)

  • @GordonSlysz 我认为正在发生的事情是在列表视图项目的每一列内都有一个“隐藏”容器。在您的复选框上设置“居中”确实将它放在您看不到的容器内,但该容器与左侧对齐并自动调整大小以适应您的复选框。所以看起来你的复选框没有居中。将 ListViewItem 的 Horizo​​ntalContentAlignment 设置为 Stretch 会使此容器填满整个列,因此现在当您的复选框居中时,它看起来就像您期望的那样。 (2认同)