Использование выделенного кода добавило 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);

который устанавливает словарь на глобальный (чтобы каждое окно могло получить к нему доступ)

Другие вопросы по тегам