我最近也花了一些时间在这方面工作,这里是我如何让它为其他人的利益工作。
首先声明名称空间向上,这样我可以在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个标题设置。
找到答案http://blogs.claritycon.com/blog/2011/03/07/datagridcolumn-bindable-header-for-localization-support-in-silverlight-4/ – Josh 2012-04-17 19:20:38