Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用代码隐藏在所有窗口中添加了DynamicSource_C#_Wpf_Xaml_Resourcedictionary_Dynamicresource - Fatal编程技术网

C# 使用代码隐藏在所有窗口中添加了DynamicSource

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

我正在开发一个多语言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"/>

我通过更改

this.Resources.MergedDictionaries.Add(dict);


它将字典设置为全局(因此每个窗口都可以访问它)

我通过更改

this.Resources.MergedDictionaries.Add(dict);


将字典设置为全局(以便每个窗口都可以访问它)

可能很明显,但为什么不对其他窗口执行相同的操作?据我所知,向合并词典添加新资源适用于所有窗口,因为所有窗口都可以访问它们。您建议我如何为每个窗口执行此操作?有一个已知的问题,您必须设置默认样式以触发
合并词典的
ResourceDictionary
。顺便说一句,我建议您在
App.xaml
中设置您的
MergedDictionaries
。我使用了代码隐藏,因此它会动态更改,在App.xaml中设置它不会有任何作用。您能否提供一个设置默认样式的示例?我不明白。这里有一些例子:可能很明显,但为什么不对其他窗口也这样做呢?据我所知,向合并词典添加新资源适用于所有窗口,因为所有窗口都可以访问它们。您建议我如何为每个窗口执行此操作?有一个已知的问题,您必须设置默认样式以触发
合并词典的
ResourceDictionary
。顺便说一句,我建议您在
App.xaml
中设置您的
MergedDictionaries
。我使用了代码隐藏,因此它会动态更改,在App.xaml中设置它不会有任何作用。您能否提供一个设置默认样式的示例?我不明白。这里有一些例子: