C# 使用代码隐藏在所有窗口中添加了DynamicSource
我正在开发一个多语言WPF应用程序,通过ResourceDictionary实现了不同的语言。 程序中的所有字符串都包含对ResourceDictionary键的引用 这是非常好的工作,但只适用于主窗口。如何将其应用于其他窗口 更改语言的代码如下所示:C# 使用代码隐藏在所有窗口中添加了DynamicSource,c#,wpf,xaml,resourcedictionary,dynamicresource,C#,Wpf,Xaml,Resourcedictionary,Dynamicresource,我正在开发一个多语言WPF应用程序,通过ResourceDictionary实现了不同的语言。 程序中的所有字符串都包含对ResourceDictionary键的引用 这是非常好的工作,但只适用于主窗口。如何将其应用于其他窗口 更改语言的代码如下所示: ResourceDictionary dict = new ResourceDictionary(); dict.Source = new Uri("..\\Resource Dictionary\\Jezi
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"/>
我通过更改
this.Resources.MergedDictionaries.Add(dict);
到
它将字典设置为全局(因此每个窗口都可以访问它)我通过更改
this.Resources.MergedDictionaries.Add(dict);
到
将字典设置为全局(以便每个窗口都可以访问它)可能很明显,但为什么不对其他窗口执行相同的操作?据我所知,向合并词典添加新资源适用于所有窗口,因为所有窗口都可以访问它们。您建议我如何为每个窗口执行此操作?有一个已知的问题,您必须设置默认样式以触发
合并词典的ResourceDictionary
。顺便说一句,我建议您在App.xaml
中设置您的MergedDictionaries
。我使用了代码隐藏,因此它会动态更改,在App.xaml中设置它不会有任何作用。您能否提供一个设置默认样式的示例?我不明白。这里有一些例子:可能很明显,但为什么不对其他窗口也这样做呢?据我所知,向合并词典添加新资源适用于所有窗口,因为所有窗口都可以访问它们。您建议我如何为每个窗口执行此操作?有一个已知的问题,您必须设置默认样式以触发合并词典的ResourceDictionary
。顺便说一句,我建议您在App.xaml
中设置您的MergedDictionaries
。我使用了代码隐藏,因此它会动态更改,在App.xaml中设置它不会有任何作用。您能否提供一个设置默认样式的示例?我不明白。这里有一些例子: