在我的DataGrid标头中,我想将内容与右边对齐。目前我正在使用DataGrid上的样式执行此操作:
<Style TargetType="DataGridColumnHeader" x:Key="ResultatenHeader" BasedOn="{StaticResource MetroDataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
</Style>
然而,这会产生以下结果:
正如您所看到我的标题有两行,我已使用以下代码完成此操作:
<DataGridTextColumn Width="100" Header="neerslag
(m³)" Binding="{Binding Path=Resultaten[2].Double, StringFormat={}{0:f2}}"/>
我如何使第二行(单位,m3)也正确对齐。
答案 0 :(得分:0)
将TextBlock
用作Header
内容,然后您可以右对齐文字
<DataGridTextColumn ...>
<DataGridTextColumn.Header>
<TextBlock Text="neerslag
(m³)" TextAlignment="Right"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
修改强>
因为您使用MahApps Metro更改了DataGridColumnHeader
的模板,并且作为其中的一部分,它将ContentTemplate
更改为TextBlock
(Controls.DataGrid.xaml第238行),因此您无法放置任何内容进入Header
,因为它将被转换为字符串。您可以更改DataGridColumnHeader
的样式,将其基于Metro样式并将ContentTemplate
更改为null,这样您就可以再次在TextBlock
中放置您想要的任何内容,例如Header
但它应该保持Metro风格
<DataGrid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/controls.datagrid.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="{x:Type DataGridColumnHeader}" BasedOn="{StaticResource MetroDataGridColumnHeader}">
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="ContentTemplate" Value="{x:Null}"/>
</Style>
</ResourceDictionary>
</DataGrid.Resources>
答案 1 :(得分:0)
而不是像Dkozl建议的那样将ContentTemplate设置为Null,我决定将ContentTemplate编辑为:
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextBlock.FontWeight="SemiBold"
Text="{Binding Converter={StaticResource ToUpperConverter}}"
TextAlignment="Right"/>
</DataTemplate>
</Setter.Value>
</Setter>
我将这个应用到涉及数字的所有表格中,它就像一个魅力:)