Я вижу странное поведение в приложении WPF (которое я воспроизвел в примерном приложении, чтобы убедиться).Культура сбрасывается при нажатии кнопки в приложении WPF
Когда приложение запускается, я устанавливаю CultureInfo.CurrentCulture и CultureInfo.CurrentUICulture, например. Французский, перед загрузкой основного окна приложения. Тогда главное окно приложения нагрузки и локализованный текст появляется, как и ожидалось, на французском языке, например:
<Window.Resources>
<Strings x:Key="Resources"/>
</Window.Resources
<Button Content={Binding Label, Source={StaticResource Resources}}/>
Проблема заключается в том, что если я нажимаю кнопку, культуру и текст кнопки получает сброс к EN-US. Я добавил обработчик событий для события Click и внутри него CurrentCulture и CurrentUICulture сбрасываются на «en-US».
Любая идея, почему это происходит? Кажется странным, что это как-то произойдет автоматически.
Примечание: Я также пробовал делать
var cultureName = CultureInfo.CurrentCulture.Name;
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(cultureName)));
и
this.Language = XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag);
до главного окна нагрузок, но это не помогает, культура все еще получает сброс.
ОБНОВЛЕНИЕ: Я задал вопрос также на форумах WPF (https://social.msdn.microsoft.com/Forums/vstudio/en-US/884af2cb-fcc3-4cfe-bea0-7a84f74583a8/culture-gets-reset-on-button-click?forum=wpf). Там я описал реальный сценарий, возможно, немного лучше: мне нужно настроить конкретную культуру при запуске приложения и сохранить его в течение всего срока действия приложения. К сожалению, при нажатии кнопки культура сбрасывается, как описано.
Этот вопрос МОЖЕТ иметь ответы, которые вам нужны. По-видимому, культура почему-то не применяется к элементам управления. Не уверен, однако, что вы можете о нем многое сказать. http://stackoverflow.com/questions/4041197/how-to-set-and-change-the-culture-in-wpf –
Что интересно, если я установил точку останова в обработчике кликов кнопки, культура будет сброшена на en-US только в первый раз, когда он попал. Если, щелкнув один раз, я снова вернусь к французской культуре, а затем снова нажмите кнопку, CurrentCulture и CurrentUICulture являются французскими. –