WPF - 标题中的数据网格转换由键替换:打开新窗口时

时间:2016-12-20 10:04:39

标签: c# wpf datagrid internationalization prism

我无法显示所有代码,细节......关于这种情况,所以我会尽可能明确地说明。对不起。

我们在WPF中有一个已翻译的dataGrid。使用代码隐藏方法在Header中加载翻译的地方如下:

 string[] headerDictionary =
                {
                    Properties.Resources.XXX,
                    (...) all your ressources here

                };

            for (int i = 0; i < this.ResultDataGrid.Columns.Count; i++)
            {
                DataGridColumn dgc = this.ResultDataGrid.Columns[i];
                dgc.Header = headerDictionary[i];
                dgc.Width = DataGridLength.SizeToCells;
            }

这是因为我们改变了语言而没有这个,标题中的语言将不会被调整。

为了解决我的问题,我试图删除这个,没有帮助。

此外,在xaml中,我们对此进行了类似的翻译:

 Header="{lex:LocTextExtension keyHere}"

因此,在搜索页面上,我们用Prism处理部分(结果列表)中的结果。

在这一部分,我们有一个alt +双击选项,可以在新闻窗口中打开记录。

当打开新窗口时,仅在这种情况下,我们会松开dataGrid标头中的翻译。它们被键替换:xxxxxx。

如果删除翻译后面的代码,则网格翻译不适用于语言更改。

我试过了: - 删除所有特殊代码 - 改变文化两次以强制重新加载语言 - 改变翻译方法。

没有任何作用。

我唯一可以证明的是,它与打开一个新窗口有关。

你知道这些问题吗?有人知道如何解决这个问题?

提前感谢您的支持。

1 个答案:

答案 0 :(得分:0)

经过调查,我找到了以下解决方案。

这是有效的,翻译并双击打开新窗口。

正确处理所有翻译并按预期行事:

  • 删除XAML中的所有Header="{lex:LocTextExtension keyHere}"
  • 将代码中的所有标题设置如下:

    string [] headerDictionary =                 {                     Properties.Resources.yourKeyHere,                     Properties.Resources.yourKeyHere,                     Properties.Resources.yourKeyHere,                     Properties.Resources.yourKeyHere,                     (......)                 };

            for (int i = 0; i < this.ResultDataGrid.Columns.Count; i++)
            {
                DataGridColumn dgc = this.ResultDataGrid.Columns[i];
                dgc.Header = headerDictionary[i];
                dgc.Width = DataGridLength.SizeToCells;
            }
    

为什么会这样,我无法回答,它只是有效。如果有人有更好或互补的答案,我将很乐意理解。