我已经开始使用WPF Localization Extension来为WPF项目本地化我的资源。我喜欢这个库,因为它可以很容易地找到XAML-Code之外的资源。
我的项目包含一些程序集(一个通过特定视图),我想通过程序集使用一个包含特定于程序集的键的dictionnary资源。 我在程序集上遇到问题,我想翻译一个DataGrid。
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="{lex:Loc Test}" Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
在usercontrol标题中:
xmlns:lex="http://wpflocalizeextension.codeplex.com"
lex:ResxLocalizationProvider.DefaultAssembly="MyModules.Test"
lex:ResxLocalizationProvider.DefaultDictionary="Resources"
设计时的翻译工作。但是在运行时,我有关键:在标题文本中测试。单击网格的一行后,翻译正确更新,它可以正常工作,但我需要单击一行。 在另一个程序集的其他用户控件中,我使用一个简单的TextBlock,并且翻译工作正常。
在主程序集中,我初始化应用程序:
LocalizeDictionary.Instance.SetCurrentThreadCulture = true;
LocalizeDictionary.Instance.SetCultureCommand.Execute("fr");
我需要做什么?
答案 0 :(得分:1)
来自MrCircuit的回答
你所描述的是WPF的一个更深层次的问题:DataGrid打破了 附加属性所需的父/子关系树 恢复。因此,DataGrid内的loc扩展不能 访问DefaultAssembly和DefaultDictionary值。
可能的解决方法是: (A)在里面添加这些附加属性 您的DataGrid元素 (B)使用扩展键语法: 大会:字典:关键 我测试的选项B工作正常。 感谢