如何在WPF ListView中将文本居中对齐到特定列?

23

我尝试了这个方法以及水平对齐(HorizontalAlignment)的方法,但它们仍然显示为左对齐。

<Window x:Class="EditorWindow.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        DataContext="{Binding RelativeSource={RelativeSource Self}}"
        Title="MainWindow" Height="800" Width="600">
    <Grid>
        <ListView ItemsSource="{Binding Effects}">
            <ListView.View>
                <GridView>
                    <GridViewColumn Width="100" Header="Name" DisplayMemberBinding="{Binding Name}"  />
                    <GridViewColumn Width="100" Header="Type" >
                        <GridViewColumn.CellTemplate >
                            <DataTemplate>
                                <TextBlock Text="{Binding Type}" TextAlignment="Center"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>
                    <GridViewColumn Width="100" Header="Opacity" DisplayMemberBinding="{Binding Opacity}" />
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>
1个回答

60

尝试将HorizontalContentAlignment设置为Stretch,然后在ItemContainerStyle中使用TextAlignment="Center"HorizontalAlignment="Center"来与TextBlock配合使用。

<ListView ItemsSource="{Binding Effects}">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ListView.ItemContainerStyle>
    <!--...-->
</ListView>

4
好的,为了使它起作用,有人能解释一下为什么你必须这样做吗? - ShadowScripter
8
如何仅对特定列执行相同操作。 - Gaurav123
2
我使用了以下代码:<GridViewColumn Header="Exact Date" Width="100"> <GridViewColumn.CellTemplate > <DataTemplate> <TextBlock Text="{Binding Path=ExactDate, StringFormat='MM/dd/yyyy'}" TextAlignment="Right" HorizontalAlignment="Right"/> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn>但是它没有起作用。 - Gaurav123
2
不要忘记从列中删除 DisplayMemberBinding 属性,否则 CellTemplate 将完全不会被应用。 - Filip

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接