Вызовите обновление UI на лету после изменения текущей культуры в WPF

Я должен поддерживать изменение языка UI через меню приложения. Тексты локализуются с помощью файлов ресурсов (подобный для приближения 1 здесь)

если я установил Thread.CurrentThread.CurrentUICulture прежде чем ctor звонит в InitializeComponent(), UI изменяется, как он должен.

Однако, если CurrentUICulture изменяется во время нормального выполнения приложения, средства управления не обновляются (т.е. текст остается тем же, независимо от текущей культуры).

Есть ли способ вынудить средства управления обновиться соответственно CurrentUICulture?

14
задан Elad 17 December 2009 в 16:32
поделиться

2 ответа

Вы можете использовать подход ResourceDictionary вместе с DynamicResourceMarkupExtension. Используя этот подход вы можете выкачать ресурсный словарь, представляющий выбранный пользователем язык, а DynamicResourceMarkupExtension обеспечит отражение нового значения в пользовательском интерфейсе.

Также, если вы хотите рискнуть в область пользовательского решения, есть LocalizeMarkupExtension, который представлен в этом учебном материале WPF.

.
10
ответ дан 1 December 2019 в 15:02
поделиться

Предполагая, что DataContext для меню является объектом, реализующим INotifyPropertyChanged, вы можете обновить все элементы управления, указав null (ничего) в событии PropertyChanged ...

из ] msdn :

Событие PropertyChanged может указывать все свойства объекта имеют изменено с использованием либо нуля ссылка (ничего в Visual Basic) или String.Empty в качестве имени свойства в the PropertyChangedEventArgs.

2
ответ дан 1 December 2019 в 15:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: