WPF ListView GridView DisplayMemberBinding居中对齐内容

4

我正在尝试将ListView/Gridview中使用DisplayMemberBinding的数据居中对齐。

以下是我的GridView的部分代码:

<ListView>
    <ListView.View>
        <GridView>
            <GridView.Columns>
               <GridViewColumn DisplayMemberBinding="{Binding Path=Timi}" Width="Auto">
                   <GridViewColumnHeader Content="Tími" Click="GridViewColumnHeader_Click" ></GridViewColumnHeader>
                </GridViewColumn>
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

我尝试使用类似于此页面所解释的CellTemplate:http://msdn.microsoft.com/en-us/library/system.windows.controls.gridviewcolumn.celltemplate.aspx,但是没有生效,后来我在某个地方读到说永远不应该同时使用cellTemplate和DisplayMemberBinding。

所以问题是:当我使用DisplayMemberBinding将数据绑定到gridview时,如何使gridview数据居中?

提前感谢您的帮助。

3个回答

6

我找到了如何做到这一点,但我必须进行大量修改。
我遵循了这个链接上的信息:
如何在WPF中自动调整大小和右对齐GridViewColumn数据?

首先,我必须将以下内容添加到我的资源文件中:

<Style TargetType="ListViewItem">
    <Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>

然后修改我的列表视图,使其看起来像这样:
<ListView >
    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn>
                     <GridViewColumnHeader Content="ColName" Click="GridViewColumnHeader_Click" ></GridViewColumnHeader>
                     <GridViewColumn.CellTemplate>
                         <DataTemplate>
                             <TextBlock Text="{Binding Path=col1, StringFormat='0.00'}" TextAlignment="Center" />
                         </DataTemplate>
                         </GridViewColumn.CellTemplate>
                     </GridViewColumn>
                 <GridView.Columns>
            <GridView>
    <ListView.View>
<ListView >

感谢您的帮助
Bigginn

嗯,技术上我不得不摆脱 DisplayMemberBinding 标记 :) - Bigginn
谢谢!是的,一旦我删除了DisplayMemberBinding标签,这个方法就非常好用了! - Joe Doyle

6

这样做更加简单,而且仍然可以使用DisplayMemberBinding标签。

<ListView ItemsSource="{Binding Song}" TextBlock.FontSize="32">
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Title" DisplayMemberBinding="{Binding Title}"/>
            <GridViewColumn Header="Artist" DisplayMemberBinding="{Binding Artist}"/>
        </GridView>
    </ListView.View>
</ListView>

0

尝试在GridViewColumnHeader上使用HorizontalContentAlignment="Center",看看是否有帮助。


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