WPF中ListView使用GridViewColumn居中对齐的方法

首先说明LisbBox/ListView/GridView使用的DataTemplate中使用Grid或其他布局控件中不能平均分配列或者是行是长期以来存在的bug。

我于2015年3月份左右替提交了bug给微软,微软回复确实是一个bug,但目前有更重要的事情要处理,这个bug后期整理汇总还会考虑解决。


LisbBox/ListView/GridView使用如下模板方式不能平均分成3列而是一个挨一个:

<DataTemplate x:Key="xxxxx">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
    </Grid>
</DataTemplate>







如下处理方式没有验证,转转的。



本文转载自:http://www.tuicool.com/articles/2u2EJv


在WPF中使用ListView经常会用到GridView作为视图,但是却碰到GridViewColumn不能居中对齐的问题,首先想到不使用GridViewColumn的DisplayMemberBinding属性,直接设置DataTemplate,于是尝试修改代码为:

 <GridViewColumn.CellTemplate>
     <DataTemplate>
           <TextBlock TextAlignment="Center"  Text="{Binding XX}"/>
     </DataTemplate>
 </GridViewColumn.CellTemplate>

结果还是不行,因为TextBlock的Width是根据Text内容自动调整,没有填充整个单元格,所以需要调整填充样式。方法有两种:


【方案一】

将DataTemplate元素的MinWidth和单元格的ActualWidth绑定,这样就能让DataTemplate元素始终填满单元格:

<GridViewColumn  Width="200" x:Name="column">  
    <GridViewColumn.CellTemplate>  
           <DataTemplate>  
                  <TextBlock Text="{Binding Name}" TextAlignment="Center" MinWidth="{Binding Path=ActualWidth,ElementName=column}"/>  
           </DataTemplate>  
    </GridViewColumn.CellTemplate>  
</GridViewColumn>

【方案二】

给ListViewItem设置Style,让ListViewItem在水平方向拉伸填充:

<Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">  
    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>  
</Style> 

<ListView ItemContainerStyle="{StaticResource ListViewItemStyle}"> 
然后再给GridViewColumn的Datatemplate设置居中对齐就可以了。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值