天天看點

C# WPF 動态切換多國語言支援

WPF支援多國語言方式大同小異,本文将介紹使用資源字典檔案實作多國語言動态切換,其不僅可以實作UI顯示語言的切換,也可以實作控件對應綁定資料的語言切換,整體操作可行且較容易實作。以下分步描述具體實作過程:
           

為友善說明,建立一個wpf項目,添加一個Combox、TextBox以及Button控件:

一. 建立資源字典(語言檔案)

二. 控件内容與資源字典的動态綁定

三. 随意切換語言

一. 建立資源字典(語言檔案)

一種語言對應一個.xaml資源檔案,在項目中建立Language檔案夾,在檔案下建立中文資源檔案zh_CN.xaml檔案,檔案内容如下:

<sys:String x:Key=“BtnName”>切換</sys:String>

<sys:String x:Key=“DisplayTips”>你好 世界</sys:String>

同理建立英文資源字典檔案如下:

<sys:String x:Key=“BtnName”>Switch</sys:String>

<sys:String x:Key=“DisplayTips”>Hello World</sys:String>

在App.xaml中添加:

<Application.Resources>

<ResourceDictionary.MergedDictionaries>

</ResourceDictionary.MergedDictionaries>

</Application.Resources>
           

二. 控件内容與資源字典的動态綁定

TextBox控件内容綁定為資源字典中的DisplayTips,Button綁定BtnName:

三. 随意切換語言

預設中文,選中English後,點選切換,将切換為英文顯示,實作如下:

private void btnSwitch_Click(object sender, RoutedEventArgs e)

{

string lang = cbLanguage.SelectedValue.ToString();

if(lang == “English”)

{

lang = “en_US”;

}

else

{

lang = “zh_CN”;

}

ResourceDictionary langRd = null;

try

{

langRd = Application.LoadComponent(new Uri(@"\Language"+lang + “.xaml”, UriKind.Relative)) as ResourceDictionary;

}

catch

{

}

if (langRd != null)

{

if (this.Resources.MergedDictionaries.Count > 0)

{

this.Resources.MergedDictionaries.Clear();

}

this.Resources.MergedDictionaries.Add(langRd);

}

}

繼續閱讀