目录

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

目录

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

1
2
3
4
5
<GridViewColumn.CellTemplate>
	<DataTemplate>
		<TextBlock TextAlignment="Center"  Text="{Binding XX}"/>
	</DataTemplate>
</GridViewColumn.CellTemplate>

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

【方案一】

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

1
2
3
4
5
6
7
<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在水平方向拉伸填充:

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

<ListView ItemContainerStyle="{StaticResource ListViewItemStyle}">  

然后再给GridViewColumn的Datatemplate设置居中对齐就可以了。