WPF本地化扩展

时间:2015-08-27 07:00:55

标签: c# wpf xaml localization .net-assembly

我已经开始使用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");

我需要做什么?

1 个答案:

答案 0 :(得分:1)

来自MrCircuit的回答

  

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

     

可能的解决方法是:   (A)在里面添加这些附加属性   您的DataGrid元素   (B)使用扩展键语法:   大会:字典:关键   我测试的选项B工作正常。   感谢