WPF本地化扩展
本文关键字:扩展 本地化 WPF | 更新日期: 2023-09-27 18:10:11
我已经开始使用WPF本地化扩展来本地化我的WPF项目资源。我喜欢这个库,因为它可以很容易地从xml代码中找到资源。
我的项目包含一些程序集(一个接一个的特定视图),我想通过包含特定于程序集的键的程序集使用一个字典资源。我在一个程序集上有一个问题,我想翻译一个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"
设计时的翻译工作。但在运行时,我有键:Test at header text。在我点击网格的一行后,翻译是正确更新的,它的工作完美,但我需要点击一行。在另一个程序集的其他用户控制中,我使用一个简单的TextBlock和翻译直接工作。
在主程序集中,我初始化了应用程序: LocalizeDictionary.Instance.SetCurrentThreadCulture = true;
LocalizeDictionary.Instance.SetCultureCommand.Execute("fr");
我需要做什么?
MrCircuit的回答
你所描述的是WPF的一个更深层次的问题:数据网格打破了附加属性所需的父/子关系树检索。因此,DataGrid中的loc扩展不能访问DefaultAssembly和DefaultDictionary值。
可能的解决方法有:(A)在里面添加这些附加属性您的DataGrid元素(二)使用扩展键语法:组装:字典:关键我测试过的选项B工作得很好。由于