Использование выделенного кода добавило DynamicResource во все окна
Я занимаюсь разработкой многоязычного приложения 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"/>
1 ответ
Я решил проблему, изменив
this.Resources.MergedDictionaries.Add(dict);
в
Application.Current.Resources.MergedDictionaries.Add(dict);
который устанавливает словарь на глобальный (чтобы каждое окно могло получить к нему доступ)