【发布时间】:2017-03-06 13:24:08
【问题描述】:
我正在开发一个多语言 WPF 应用程序,我通过 ResourceDictionary 实现了不同的语言。 程序中的所有字符串都包含对 ResourceDictionary 键的引用。
这工作得很好,但只适用于主窗口。我怎样才能将它也应用到任何其他窗口?
更改语言的代码如下所示:
ResourceDictionary dict = new ResourceDictionary();
dict.Source = new Uri("..\\Resource Dictionary\\Jeziki\\SloLanguage.xaml", UriKind.Relative);
this.Resources.MergedDictionaries.Add(dict);
示例主窗口控件
<MenuItem Header="{DynamicResource datoteka}" Template="{DynamicResource MenuItem}" Foreground="White">
<MenuItem Header="{DynamicResource novo}" Click="menu_novo_Click" Foreground="Black"/>
<MenuItem Header="{DynamicResource odpri}" Click="menu_open_Click" Foreground="Black"/>
<MenuItem Header="{DynamicResource shrani}" Click="menu_save_Click" Foreground="Black"/>
【问题讨论】:
-
也许很明显,但你为什么不对其他窗口做同样的事情呢?
-
据我了解,向 MergedDictionaries 添加新资源适用于所有窗口,因为所有窗口都可以访问它们。请问您如何建议我对每个窗口都这样做?
-
存在一个已知问题,您必须设置默认样式才能触发
ResourceDictionary的MergedDictionaries。顺便说一句,我建议您将MergedDictionaries设置为App.xaml。 -
我使用了代码隐藏,因此它会动态更改,在 App.xaml 中设置它不会做任何事情。您能否提供一个设置默认样式的示例?我没听懂。
标签: c# wpf xaml resourcedictionary dynamicresource