【问题标题】:WPF Localization ExtensionWPF 本地化扩展
【发布时间】:2015-08-27 07:00:55
【问题描述】:

我已经开始使用 WPF 本地化扩展来本地化我的 WPF 项目资源。我喜欢这个库,因为它可以很容易地从 XAML 代码中找到资源。

我的项目包含一些程序集(一个按特定视图),我想按程序集使用一个字典资源,其中包含特定于程序集的键。 我在要翻译 DataGrid 的程序集上遇到问题。

                <DataGrid>
                <DataGrid.Columns>
                    <DataGridTextColumn Header="{lex:Loc Test}"  Width="Auto"/>
                </DataGrid.Columns>
            </DataGrid>

在用户控件标题中:

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

我需要做什么?

【问题讨论】:

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


    【解决方案1】:

    来自 MrCircuit 的回答

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多