我无法显示所有代码,细节......关于这种情况,所以我会尽可能明确地说明。对不起。
我们在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。
如果删除翻译后面的代码,则网格翻译不适用于语言更改。
我试过了: - 删除所有特殊代码 - 改变文化两次以强制重新加载语言 - 改变翻译方法。
没有任何作用。
我唯一可以证明的是,它与打开一个新窗口有关。
你知道这些问题吗?有人知道如何解决这个问题?
提前感谢您的支持。
答案 0 :(得分:0)
经过调查,我找到了以下解决方案。
这是有效的,翻译并双击打开新窗口。
正确处理所有翻译并按预期行事:
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;
}
为什么会这样,我无法回答,它只是有效。如果有人有更好或互补的答案,我将很乐意理解。