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);
}
}