我最近也花了一些时间来研究这个,这是我如何让它为其他人的利益工作的。
首先在顶部声明命名空间,以便我可以在 xaml 中简写指定它。
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
然后我将标题样式声明为顶部的静态资源以保持数据网格 xaml 干净:
<navigation:Page.Resources>
<Style x:Key="NameStyle" TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Path=LocalizedStrings.Name, Source={StaticResource Language}}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="DescriptionStyle" TargetType="sdk:DataGridColumnHeader">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding Path=LocalizedStrings.Description, Source={StaticResource Language}}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</navigation:Page.Resources>
然后在您的数据网格 xaml 中,您可以简单地将 DataGridTextColumns 标题样式设置为静态资源标题样式。
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Width="Auto" FontSize="11" MinWidth="100" Binding="{Binding Name}" HeaderStyle="{StaticResource NameStyle}" />
<sdk:DataGridTextColumn Width="1*" FontSize="11" Binding="{Binding Description}" HeaderStyle="{StaticResource DescriptionStyle}" />
</sdk:DataGrid.Columns>
我最初的解决方案来自这篇文章:Dynamically setting the Header text of a Silverlight DataGrid Column
刚刚整理了一下,因为我要设置 15 个列标题。