检测WPF中的系统语言更改

时间:2011-09-07 22:33:33

标签: c# .net wpf

我们可以使用以下代码来了解Windows窗体中系统语言的更改时间 - Form.InputLanguageChanged

string _language = "";
InputLanguageChanged += new InputLanguageChangedEventHandler( (sender, e) =>
{
      language = InputLanguage.CurrentInputLanguage.LayoutName;
});

什么是WPF相当于Form.InputLanguageChanged

2 个答案:

答案 0 :(得分:11)

您可以使用以下代码检测WPF中的键盘语言更改

string language = "";
System.Windows.Input.InputLanguageManager.Current.InputLanguageChanged += 
       new    InputLanguageEventHandler((sender, e) =>
{
   language = e.NewLanguage.DisplayName;
}); 

注意:无需检测系统UI语言更改,因为它需要注销/登录,这反过来会强制所有应用程序重新启动(查看Hans Passant对How To Detect Language Changes While Runtime ? (C#)的评论

答案 1 :(得分:3)

希望this有所帮助。您必须使用InputLanguageManager.InputLanguageChanging Event,这会在启动输入语言更改时发生。它应该如下。

InputLanguageManager.Current.InputLanguageChanged += new InputLanguageEventHandler(Current_InputLanguageChanged);

以下是我发现有趣的更多细节。 WPF Localization - On-the-fly Language Selection