WPF国际化方式1之资源文件
先看效果吧,个人觉得由于MVVM模式的UI响应属性变化的特殊机制,资源文件和内存数据都是国际化不错的选择。
1.首先准备两个资源文件用来做中文和英文的转换使用,将程序中需要转换语言都弄成两个版本,分别放到两个资源文件中。
将其中一个设为默认的语言,将默认的语言的资源文件的生成操作改为"Page"。
将其他语言文件的属性改为图下:
2.将程序中需要用到的字符串翻译为各个版本,放置到对应的资源文件之中.
Chinese.xaml
English.xaml
3 在App.xaml之中导入默认的语言的资源文件作为全局资源,如果不想全局使用,只是特定的窗体就添加到对应窗体的Resources之中。
4.
(1)在xaml之中使用资源字典的数据:
直接使用 属性值=" {DynamicResource ResourceKey=XXX}" XXX为资源字典中的key值
(2)在cs后台文件中使用资源字典的数据:
FindResource("XXX"); XXX为资源的key值
前提该窗体能够获取到该资源
(3)在viewModel文件中使用资源字典的数据
将窗体作为参数,通过构造传递到ViewModel,其他方式暂未知晓。。。
使用MVVM模式的,可以尝试将资源写入到两个字典获取其他对象中,在切换时修改对象即可,由于属性通知的机制,会自动更新UI。
5.切换资源字典:
切换时切记要判断资源集合中是否已有国际化语言的资源字典,如果有要先移出,在加入切换的语言资源,不然会产生冲突。
如果资源字典添加在App.xaml之中,步骤为
(1)获取资源字典
(2)移除已有再添加,此处判断方法是判断App.xaml的所有的资源字典中是否存在包含某个键值的资源字典,如果存在就表明他是语言的资源文件,因为还有其他的需要用到的不能都移除,只需移除语言的资源
如果资源字典添加到窗体的Resource之中的,只需将上面图中的"Application.Current.Resources.MergedDictionaries"改为" {你的window对象}.Resources.MergedDictionaries"其他一致。
WPF国际化方式1之资源文件的更多相关文章
- Spring boot 国际化自动加载资源文件问题
Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义 ...
- 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...
- 43.国际化-app级别的资源文件
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在src目录下建立两个资源文件,取名为myapp_en_US.propert ...
- WPF中动态添加xaml资源文件
一.新建一个资源文件,然后设置其Build Actoin(生成操作)为Resource(资源): 二.在App.xaml.cs的StartUp事件或者是你需要的时机代码段写上如下代码: Resourc ...
- 42.国际化-配置package的资源文件
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 同样在建立com.asm包下建立两个资源文件(package级别的资源文件名 ...
- 六种方式读取properties资源文件
conf.properties文件内容: reportStationName=xx供电局 JBM=0318 文件路径: 其中xxx为项目名 import java.io.BufferedInputSt ...
- 使用PULL方式解析XML资源文件下面的xml文件
public class MainActivity extends Activity { private Button btn = null; private List<Map<Strin ...
- JavaWeb基础: 获取资源文件
Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...
- .Net资源文件全球化
I:本博文代码示例效果图 好久没来写随笔了.不多说先上大饼! 跟着直接上 [代码下载地址] II:ASP.NET 资源文件介绍 在ASP.NET特殊文件夹内有那么两个不太引人注意,他们分别是App_ ...
随机推荐
- python为什么人们喜欢学习呢?
软件的质和量. 既有量的积累也有质的区别.继承一定的前人研究基础. 基本上来说,python更加的注重可读性,一致性,可移植性,其中软件的质量也是比较的讲究的. python支持开发的高级重用机制,例 ...
- Djaon 基于 Ajax 的 json 数据传输
关键参数:contentType:"application/json" data:JSON.stringify({ json数据 }) 再views.py中,使用request.d ...
- HDU-1873 看病要排队(队列模拟)
看病要排队 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 采用pacemaker+corosync实现postgresql双机热备、高可用方案
环境说明 参照上章已完成postgresql流复制配置,并关闭postgres服务. su - postgres pg_ctl -D /data/postgresql/data/ stop -m fa ...
- webstorm 2019 去掉编辑器右侧白线
第一步:打开设置 第二步: 第三部:apply 关闭设置
- Python + logging输出到屏幕,将log日志写入到文件
logging提供了一组便利的函数,用来做简单的日志.它们是 debug(). info(). warning(). error() 和 critical(). logging函数根据它们用来跟踪的事 ...
- ubuntu14彻底删除mysql!!!(精)
解决方法: 删除mysql前 先删除一下 /var/lib/mysql 还有 /etc/mysql sudo rm /var/lib/mysql/ -R sudo rm /etc/mysql/ -R ...
- 调整notepad++的行距的方法
notepad++是一款免费开源的文本编辑器,在windows平台上表现非常好,可以自定义的地方多,还支持主题导入,导出和切换,对各种语言的语法高亮支持也是在各大文本编辑器中名列前茅,插件库的内容也非 ...
- 【学习】005 线程池原理分析&锁的深度化
线程池 什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池.在开发过程中,合理地使用线程池能够带来3个好处. 第一:降低资源消耗.通过重复 ...
- 谷歌浏览器 安装 Vue.js devtools 工具
如果是vue写的项目,谷歌浏览器右上角的vue小图标会亮起!下面介绍如何安装 1.谷歌浏览器插件商店可以点击安装[需要梯子] 2.vue官网有对应的安装包,需要自己手动 npm run build 一 ...