使用.Net Core开发WPF App系列教程( 其他、实现多语言切换的几种方式)

使用.Net Core开发WPF App系列教程

一、.Net Core和WPF介绍

二、在Visual Studio 2019中创建.Net Core WPF工程

三、与.Net Framework的区别

四、WPF中的XAML

五、WPF中的布局

六、WPF中的常用控件(上)

其它、实现多语言切换的几种方式


在WPF中有多种方式可以实现多语言,这里提供几种常用的方式。

 

一、使用XML实现多语言切换

使用XML实现多语言的思路就是使用XML作为绑定的数据源。主要用到XmlDataProvider类.

使用XmlDataProvider.Source属性指定XML文件的路径或通过XmlDataProvider.Document指定XML文档对象,XmlDataProvider.XPath属性指定绑定的路径。

 

新建一个WPF工程,在debug目录下创建两个StrResource.xml文件,分别置于en-US和zh-CN文件夹

 

en-US/StrResource.xml

1 <?xml version="1.0" encoding="utf-8"?>
2 <Language>
3     <Main_Title>Login Form</Main_Title>
4     <Main_UserName>UserName</Main_UserName>
5     <Main_Password>Password</Main_Password>
6     <Main_Button>Login</Main_Button>
7     <Window1_Title>Main Form</Window1_Title>
8     <Window1_Label>Welcome</Window1_Label>
9 </Language>

 

zh-CN/StrResource.xml

1 <?xml version="1.0" encoding="utf-8"?>
2 <Language>
3     <Main_Title>登陆窗体</Main_Title>
4     <Main_UserName>用户名</Main_UserName>
5     <Main_Password>密码</Main_Password>
6     <Main_Button>登陆</Main_Button>
7     <Window1_Title>主界面</Window1_Title>
8     <Window1_Label>欢迎</Window1_Label>
9 </Language>

 

主窗体XAML

 1  <StackPanel>
 2         <Label Content="{Binding XPath=Main_UserName}"></Label>
 3         <TextBox></TextBox>
 4         <Label Name="Password" Content="{Binding XPath=Main_Password}"></Label>
 5         <TextBox></TextBox>
 6         <Button Height="20" Margin="10,5" Background="LightSkyBlue" Name="Login" Content="{Binding XPath=Main_Button}" Click="Login_Click"></Button>
 7         <ComboBox Name="combox" SelectedIndex="0" SelectionChanged="combox_SelectionChanged">
 8             <ComboBoxItem>中文</ComboBoxItem>
 9             <ComboBoxItem>English</ComboBoxItem>
10         </ComboBox>
11     </StackPanel>

 

在后台代码中,将XmlDataProvider对象绑定到界面即可

1 XmlDocument doc = new XmlDocument();
2 XmlDataProvider xdp = new XmlDataProvider();
3 doc.Load("./zh-CN/language.xml");  //在切换语言时,重新加载xml文档,并重新绑定到界面即可
4 xdp.Document = doc;
5 xdp.XPath = @"/Language";
6 this.DataContext = xdp;

 

运行效果如下:

使用.Net Core开发WPF App系列教程( 其他、实现多语言切换的几种方式)

使用.Net Core开发WPF App系列教程( 其他、实现多语言切换的几种方式)

上一篇:uni-app canvas生成图片的一些问题


下一篇:yum报错:Another app is currently holding the yum lock