先看效果吧,个人觉得由于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之资源文件的更多相关文章

  1. Spring boot 国际化自动加载资源文件问题

    Spring boot 国际化自动加载资源文件问题 最近在做基于Spring boot配置的项目.中间遇到一个国际化资源加载的问题,正常来说只要在application.properties文件中定义 ...

  2. 【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】

    一.类型转换器 1.在动作类action中,声明和表单中name属性的值同名的属性,提供get和set方法,struts2就可以通过反射机制,从页面中获取对应的内容 package com.kdyzm ...

  3. 43.国际化-app级别的资源文件

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在src目录下建立两个资源文件,取名为myapp_en_US.propert ...

  4. WPF中动态添加xaml资源文件

    一.新建一个资源文件,然后设置其Build Actoin(生成操作)为Resource(资源): 二.在App.xaml.cs的StartUp事件或者是你需要的时机代码段写上如下代码: Resourc ...

  5. 42.国际化-配置package的资源文件

    转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 同样在建立com.asm包下建立两个资源文件(package级别的资源文件名 ...

  6. 六种方式读取properties资源文件

    conf.properties文件内容: reportStationName=xx供电局 JBM=0318 文件路径: 其中xxx为项目名 import java.io.BufferedInputSt ...

  7. 使用PULL方式解析XML资源文件下面的xml文件

    public class MainActivity extends Activity { private Button btn = null; private List<Map<Strin ...

  8. JavaWeb基础: 获取资源文件

    Web工程在编译构建完毕以后,需要部署到Tomcat上运行,资源的硬盘路径也会随着改变.要想对资源文件进行读写操作需要获取其硬盘地址,在Web工程中通常通过ServletContext/ClassLo ...

  9. .Net资源文件全球化

    I:本博文代码示例效果图 好久没来写随笔了.不多说先上大饼!  跟着直接上 [代码下载地址] II:ASP.NET 资源文件介绍 在ASP.NET特殊文件夹内有那么两个不太引人注意,他们分别是App_ ...

随机推荐

  1. 2 python: Unicode 和list 列表

    1 unicode 2 list 列表及其内置函数等 3 不一样的for语句 Python 的 for 语句依据任意序列(链表或字符串)中的子项,按它们在序列中的顺序来进行迭代 >>> ...

  2. 面试题思考:Stack和Heap的区别 栈和堆的区别

    堆栈的概念: 堆栈是两种数据结构.堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除.在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常 ...

  3. git把本地代码上传(更新)到github上

    # 初始化目录为本地仓库 git init # 添加所有文件到暂存去 git add . # 提交所有文件 git commit -m "init" # 添加远程仓库地址 git ...

  4. c# ASP.NET MVC easyui-filebox 图片上传和显示

    原文:https://www.cnblogs.com/huatao/p/4727398.html https://www.cnblogs.com/weiweithe/p/4363458.html 表单 ...

  5. WinForm:如何在ListBox中添加CheckBox

    http://www.cnblogs.com/myshell/archive/2010/09/24/1834184.html 最近因为做WinForm的项目,遇到这个问题,当时以为CheckedLis ...

  6. 攻防世界--key

    测试文件:https://adworld.xctf.org.cn/media/task/attachments/c6cf449ae4b7498eba5027c533386a40.exe 1.准备 获取 ...

  7. CSS实现单行文本溢出显示省略号

    p { width:100px;//设定宽度 //以下三个属性设置均必不可少 white-space: nowrap; text-overflow:ellipsis; overflow:hidden; ...

  8. APP性能

    一.APP性能维度分析  APP类型众多,根据具体类型划分,性能指标的维度和优先级各不相同.视频类APP归属于娱乐游戏型的APP,因此性能测试维度优先级排序为:流畅度.crash.内存.流量.响应时长 ...

  9. 一、ffmpeg理论

    一.ffmpeg三件套 ffprobe看文件属性 ffmpeg 编转码 ffplay 播放器 C:\Users\Bruce\Desktop\Temp\ffmpeg\ffmpeg\ToolPack\ff ...

  10. glob & fnmatch -- 使用Unix style通配符

    通配符: ?  匹配单个字符 *   匹配 0+ 个字符 [seq]   匹配属于区间的单个字符 [!seq]  匹配不属于区间的单个字符 注意: "." just a " ...