是否有可能仅在WPF中为一个窗口更改系统语言?
我知道InputLanguageManager
,但我认为它改变了整个系统的语言。
答案 0 :(得分:14)
InputLanguageManager完全符合您的要求。它会更改当前应用程序的键盘布局。
操作系统为每个正在运行的应用程序保留键盘布局。例如。如果您打开记事本并切换到俄语,打开IE并切换到英语,当您激活记事本应用程序时,您的键盘区域设置仍将是俄语。
以下行仅更改当前应用程序的键盘区域设置:
InputLanguageManager.Current.CurrentInputLanguage = new CultureInfo("el-GR");
系统语言(或者说系统语言环境)和键盘布局是完全不同的概念。键盘布局是键盘的布局。
.NET应用程序中使用了三种不同的语言环境:
您还可以利用WPF数据绑定并使用InputLanguage作为附加属性。在您的XAML中,您可以将InputLanguageManager.InputLanguage属性添加到元素的声明中,如下所示:
<TextBox InputLanguageManager.InputLanguage="en-US"></TextBox>
然后,您可以将该属性绑定到代码隐藏中的属性或ViewModel。例如
<TextBox InputLanguageManager.InputLanguage="{Binding MyLanguageInfo}"></TextBox>
将此属性设置为特定值将导致UI元素的键盘发生更改:
MyLanguageInfo = new CultureInfo("en-US");
或
MyLanguageInfo = new CultureInfo("el-GR");
您可以更进一步,并将InputLanguage属性绑定到其他元素,例如。语言选项列表框
答案 1 :(得分:2)
对于键盘布局更改,你是正确的InputLanguageManager
。
InputLanguageManager.SetInputLanguage(this,CultureInfo.CreateSpecificCulture("ru"));
使用SetInputLanguage()
方法的第一个参数,您可以设置DependencyObject
,它是键盘布局的目标。