2

我已经看过很多关于这个话题的未答复的帖子,但我仍然倾向于相信这里有人已经弄清楚了这一点,并且正在阻止我们其他人。

我有一个包含模板列和文本列混合的 DataGrid。我只需要一种将标题绑定到视图模型中的属性的方法,以便我可以为不同的语言使用不同的字符串。

我已经看到WPF 数据网格标题文本绑定以及从它链接的每个帖子。此处建议的方法均不适用于 Silverlight。

没有人有任何想法吗?

4

1 回答 1

0

我最近也花了一些时间来解决这个问题,这就是我如何让它为其他人的利益而工作。

首先在顶部声明命名空间,以便我可以在 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>

我最初的解决方案来自这篇文章:Dynamicly setting the Header text of a Silverlight DataGrid Column

只是整理了一下,因为我要设置 15 个列标题。

于 2016-03-22T22:23:24.007 回答