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");

我需要做什么?

WPF本地化扩展

MrCircuit的回答

你所描述的是WPF的一个更深层次的问题:数据网格打破了附加属性所需的父/子关系树检索。因此,DataGrid中的loc扩展不能访问DefaultAssembly和DefaultDictionary值。

可能的解决方法有:(A)在里面添加这些附加属性您的DataGrid元素(二)使用扩展键语法:组装:字典:关键我测试过的选项B工作得很好。由于