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_ ...
随机推荐
- JAVA总结--设计模式
三大类设计模式: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为 ...
- 两种方法删除ArrayList里反复元素
方法一: /** List order not maintained **/ public static void removeDuplicate(ArrayList arlList) { HashS ...
- CSS制作垂直口风琴2
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- wxpython中列表框(ListBox类)、复选列表框(CheckListBox)、下拉选项(Choice)、进度条(Gauge)、滑块(Slider)使用实例源码分享
#coding=utf-8 import wx import time class MyFrame(wx.Frame): def __init__(self): wx.Frame.__init__(s ...
- Solr的学习使用之(十)数据库(Oracle、SqlServer)原有的全文索引功能和Solr对比?
本人有个问题一直不解,既然solr的全文索引功能这么强大,而且效果也不错,那为什么那些数据库厂商比如Oracle.SqlServer,不把solr的功能集成进去呢,或者说把全文索引的功能做好点,做到和 ...
- ssh免口令密码登录及兼容性处理
1). client ---> server 客户端发起对服务器的连接,登录服务器. 2). 须在客户端生成密钥对 注意: 公钥加密私钥解:私钥加密公钥解. 可以发布公钥,但私钥是不能出本机的. ...
- 关于discuz论坛邮箱配置
Discuz后台可以进行邮件设置,实现网站自动发送邮件给用户的邮箱. 在Discuz邮件设置,经常使用25端口普通发送邮件.为了数据安全,我们也可以使用SSL加密发送,设置方法很简单,只需按照下图进行 ...
- python基础--2 字符串
整型 int python3里,不管数字多大都是int类型 python2里面有长整型long 将整型字符串转换为数字 # a='123' # print(type(a),a) # b=int(a) ...
- 定位公众号页面,跳转之后 vuejs 失效问题
是第一个页面的. data () { }, 写成了这样,没写返回 {} 5555~. 网页中死活可以,微信中死活不行. data () { return {} },
- springboot 集成rabbitMQ
package com.jd.ng.shiro.config.rabbitMQconfig; import com.jd.ng.shiro.rabbitMqListener.SimpleMessage ...