有一个WPF应用程序。
它使用listview控件。
我有3列。 我希望第一列标题保持对齐 我希望其他2个居中对齐 我想让一个项目正确对齐(我知道该怎么做)。
我的标记一切都是左对齐所以我做错了什么?
这是我的标记:
<ResourceDictionary>
<Style TargetType="GridViewColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
</Style>
<DataTemplate x:Key="value1Template">
<TextBlock TextAlignment="Right" Text="{Binding Path=Description}"/>
</DataTemplate>
<DataTemplate x:Key="value2Template">
<TextBlock TextAlignment="Center" Text="{Binding Path=IncludesVATCaption}"/>
</DataTemplate>
<DataTemplate x:Key="value3Template">
<TextBlock TextAlignment="Center" Text="{Binding Path=Cost}"/>
</DataTemplate>
</ResourceDictionary>
<ListView x:Name="lvWorkItems">
<ListView.View>
<GridView>
<GridViewColumn Header="Description" CellTemplate="{StaticResource value1Template}" Width="190">
</GridViewColumn>
<GridViewColumn Header="IsVat" Width="50" CellTemplate="{StaticResource value2Template}"/>
<GridViewColumn Header="Cost" Width="65" CellTemplate="{StaticResource value3Template}" />
</GridView>
</ListView.View>
</ListView>
答案 0 :(得分:1)
您应该将HorizontalContentAligment
属性设置为Stretch
,以便行内的列/单元格可以占用所需的空间。这可以通过ItemContainerStyle
设置属性来实现。
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListView.ItemContainerStyle>
答案 1 :(得分:1)
您看到该行为导致您为GridViewColumnHeader
设置样式,并且它适用于所有列。您可以为Style
对齐列添加DataTrigger
来更改此Center
。
<ResourceDictionary>
<Style TargetType="GridViewColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Column.HeaderStringFormat}" Value="Center">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
您应该为他们设置HeaderStringFormat="Center"
属性。我知道这有点棘手。
<GridViewColumn Header="IsVat" Width="50" CellTemplate="{StaticResource value2Template}" HeaderStringFormat="Center"/>
<GridViewColumn Header="Cost" Width="65" CellTemplate="{StaticResource value3Template}" HeaderStringFormat="Center" />