Я должен поддерживать изменение языка UI через меню приложения. Тексты локализуются с помощью файлов ресурсов (подобный для приближения 1 здесь)
если я установил Thread.CurrentThread.CurrentUICulture
прежде чем ctor звонит в InitializeComponent()
, UI изменяется, как он должен.
Однако, если CurrentUICulture
изменяется во время нормального выполнения приложения, средства управления не обновляются (т.е. текст остается тем же, независимо от текущей культуры).
Есть ли способ вынудить средства управления обновиться соответственно CurrentUICulture
?
Вы можете использовать подход ResourceDictionary
вместе с DynamicResourceMarkupExtension
. Используя этот подход вы можете выкачать ресурсный словарь, представляющий выбранный пользователем язык, а DynamicResourceMarkupExtension
обеспечит отражение нового значения в пользовательском интерфейсе.
Также, если вы хотите рискнуть в область пользовательского решения, есть LocalizeMarkupExtension
, который представлен в этом учебном материале WPF.
Предполагая, что DataContext для меню является объектом, реализующим INotifyPropertyChanged, вы можете обновить все элементы управления, указав null (ничего) в событии PropertyChanged ...
из ] msdn :
Событие PropertyChanged может указывать все свойства объекта имеют изменено с использованием либо нуля ссылка (ничего в Visual Basic) или String.Empty в качестве имени свойства в the PropertyChangedEventArgs.