簡體   English   中英

在WPF中更改一個/活動窗口的系統語言

[英]Change system language for one/active window in WPF

是否只能在WPF中為一個窗口更改系統語言?

我知道InputLanguageManager但我認為它改變了整個系統的語言。

InputLanguageManager完全符合您的要求。 它會更改當前應用程序的鍵盤布局。

操作系統為每個正在運行的應用程序保留鍵盤布局。 例如。 如果您打開記事本並切換到俄語,打開IE並切換到英語,當您激活記事本應用程序時,您的鍵盤區域設置仍將是俄語。

以下行僅更改當前應用程序的鍵盤區域設置:

InputLanguageManager.Current.CurrentInputLanguage = new CultureInfo("el-GR");

系統語言(或者說系統語言環境)和鍵盤布局是完全不同的概念。 鍵盤布局是鍵盤的布局。

.NET應用程序中使用了三種不同的語言環境:

  • UI語言環境是用於顯示消息並選擇本地化UI字符串和布局的語言環境。 您可以通過設置Thread.CurrentUICulture屬性來更改線程的UI語言環境。 其初始值由操作系統在區域設置中的顯示語言控制
  • 線程的語言環境用於解析字符串並將日期和數字轉換為字符串。 您可以通過設置Thread.CurrentCulture屬性來更改它。 其原始值由操作系統的區域設置格式屬性控制
  • 系統區域設置由非Unicode應用程序使用,或者在寫入ASCII文件和控制台時使用。

您還可以利用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屬性綁定到其他元素,例如。 語言選項的列表框

對於鍵盤布局,您可以通過正確的方式更改InputLanguageManager

InputLanguageManager.SetInputLanguage(this,CultureInfo.CreateSpecificCulture("ru"));

使用SetInputLanguage()方法的第一個參數,您可以設置DependencyObject ,它是鍵盤布局的目標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM