博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF 多语言实现
阅读量:6228 次
发布时间:2019-06-21

本文共 2243 字,大约阅读时间需要 7 分钟。

原文:

很多国际化的程序都提供了多语言的选项,这样方便不同国家的使用者更方便的使用软件。这篇博客中将介绍在WPF中实现多语言的方式。

方式一,使用WPF动态资源的方式实现。先简单介绍下StaticResource和DynamicResource,这两者的区别在于动态资源改变后会实时的体现出来,而静态资源只加载一次,后面对资源的任何改变都不会体现出来。显而易见,使用动态资源会降低系统的性能。

新建一个工程,添加ZH.xaml与EN.xaml两个资源文件,用于放置界面显示的文案;

 

MainWindow.xaml:

切换语言方法:

private string _currentLan = string.Empty;        public MainWindow()        {            InitializeComponent();            _currentLan = "ZH";        }        private void SwitchButton_Click(object sender, RoutedEventArgs e)        {            string message = TryFindResource("Message") as string;            MessageBox.Show(message);            // TODO: 切换系统资源文件            ResourceDictionary dict = new ResourceDictionary();            if(_currentLan == "ZH")            {                dict.Source = new Uri(@"Resources\Language\EN.xaml", UriKind.Relative);                _currentLan = "EN";            }            else            {                dict.Source = new Uri(@"Resources\Language\ZH.xaml", UriKind.Relative);                _currentLan = "ZH";            }            Application.Current.Resources.MergedDictionaries[0] = dict;        }

运行效果:

代码点击下载。

方式二,Xml文件+XPath的方式来实现。

项目结构:

新建两个xml文件,Chinese.xml和English.xml。

你好 WPF世界!

使用:

切换语言:

private string _currentLang = string.Empty;        public MainWindow()        {            InitializeComponent();            _currentLang = "Zh";        }        private void SwitchButton_Click(object sender, RoutedEventArgs e)        {            // TODO: Switch Language            XmlDataProvider provider = TryFindResource("Lang") as XmlDataProvider;            if (provider == null)                return;            if(_currentLang == "Zh")            {                provider.Source = new Uri("Languages/English.xml", UriKind.Relative);                _currentLang = "En";            }            else            {                provider.Source = new Uri("Languages/Chinese.xml", UriKind.Relative);                _currentLang = "Zh";            }            provider.Refresh();        }

运行效果:

代码点击下载。

当然实现多语言的方式有很多方式,例如:

感谢您的阅读。谢谢!

转载地址:http://xaxna.baihongyu.com/

你可能感兴趣的文章
Windows环境下python2.7安装mysql-python
查看>>
InnoDB的三个关键特性
查看>>
请教一个问题:关于 webrtc 通信的问题
查看>>
SDE里修改要素的已有字段的长度
查看>>
openStack高可用性和灾备方案
查看>>
svn完整搭建
查看>>
programData
查看>>
python正则表达式二[转]
查看>>
Easyui datagrid
查看>>
win11.2.0.4lsnrctl status hang
查看>>
黑盒测试实践作业进度报告(周四)
查看>>
json和jsonp
查看>>
js form表单 鼠标移入弹出提示功能
查看>>
机器学习(一)
查看>>
.NET Framework 简介
查看>>
VMWare 虚拟机
查看>>
DHCP 协议 1
查看>>
django配置一个网站建设
查看>>
Window 消息大全
查看>>
EM算法
查看>>