事情是这样的:
我有一个简单的 WPF Windows 应用程序,其中包含一个TreeView
,它是在HierarchicalDataTemplate
一些分层数据的帮助下构建并提供的。
分层数据结构由 FakeRec 类组成,该类包含一个List<FakeRec>
. 每个项目都包含一个 Title 字符串属性。所以在我的 XAML 中,我有:
...
<HierarchicalDataTemplate ItemsSource="{Binding Items}" DataType="{x:Type local:FakeRec}">
...
<TextBlock Grid.Column="0" Text="{Binding Path=Title}"/>
...
</HierarchicalDataTemplate>
...
这工作正常,在生成的TreeView
我看到每个节点的标题。
现在我想让这整棵树本地化。我在 FakeDirResources.Resx 中有我的资源(在一个单独的程序集中,但这没关系)。如果我这样做:
...
<HierarchicalDataTemplate ItemsSource="{Binding Items}" DataType="{x:Type local:FakeRec}">
...
<TextBlock Grid.Column="0" Text="{Binding Path=Title, Source={StaticResource FakeDirResources}}"/>
...
</HierarchicalDataTemplate>
...
我的树是空白的(显然,因为在我的FakeDirResources.resx
文件中我没有带有 key 的资源Title
,但我需要使用Title
另一个绑定的,通过资源解决它,然后以某种方式将结果绑定到树。
请注意,如果我只是将 aTextBlock
放在窗口上,与树或 无关HierarchicalDataTemplate
,我可以将它毫无问题地绑定到资源,如下所示:
<TextBlock Text="{Binding Path=games, Source={StaticResource FakeDirResources}}"/>;
这很好用,获取字符串,如果我更改System.Threading.Thread.CurrentThread.CurrentUICulture
并刷新我的提供程序,此字符串将更改为新语言。
问题是如何将两者结合起来?我错过了什么?我想一定有一些技巧(根据我对 WPF 的短暂经验,这可能不是一个直截了当的技巧)。
干杯!
阿隆。