zoukankan
html css js c++ java
用代码使用WPF中的动态资源
刚好公司在进行一个WPF的内部项目,今天我的任务是让整个应用支持多语言(全球化)。
我使用了WPF中的资源文件来存放mutil language数据。
resource文件如下:
<
ResourceDictionary xmlns
=
"
http://schemas.microsoft.com/winfx/2006/xaml/presentation
"
xmlns:x
=
"
http://schemas.microsoft.com/winfx/2006/xaml
"
xmlns:sys
=
"
clr-namespace:System;assembly=mscorlib
"
>
<
sys:String x:Key
=
"
AllNews
"
>
所有
</
sys:String
>
<
sys:String x:Key
=
"
China
"
>
中国
</
sys:String
>
<
sys:String x:Key
=
"
World
"
>
世界
</
sys:String
>
<
sys:String x:Key
=
"
News
"
>
新闻
</
sys:String
>
<
sys:String x:Key
=
"
Other
"
>
其他
</
sys:String
>
</
ResourceDictionary
>
对于各个业务组件的全球化十分简单,如
<
Button Height
=
"
23
"
Name
=
"
btnChina
"
Width
=
"
75
"
Click
=
"
Button_Click
"
Content
=
"
{DynamicResource China}
"
>
但是对于主窗体来说,菜单是要通过读取各个业务组件的CustomAttribute来创建的。起初,我用的方法是直接从应用程序的资源里找到对应的串。
(
string
)Application.Current.Resources.MergedDictionaries[
0
][key]
但是问题随之而来,当我切换language resource文件时,菜单上的内容并不会自动更新。既然WPF都用了DataBinding功能,总不能还用代码去更新菜单项吧。这违背了我们程序员的原则!
查阅了相关书籍,终于找到了解决的方案,使用UIElement对象的SetResourceReference方法来实现
{DynamicResource XXXX}
的功能:
item
=
new
MenuItem();
item.SetResourceReference(MenuItem.HeaderProperty, key);
this
.menuMain.Items.Add(item);
问题解决,睡觉!
查看全文
相关阅读:
Java UDP通信简单实现
为什么要阅读——兼分享《首先,打破一切常规》[中译文]:世界顶级管理者的成功秘诀/(美)马库斯·白金汉,(美)柯特·科夫曼 著
怎样提高团队管理能力9
POJ2777 Count Color 线段树区间更新
Swift和Objective-C混合编程——Swift调用OC
LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
ZZUOJ-1195-OS Job Scheduling(郑州大学第七届ACM大学生程序设计竞赛E题)
CentOS出错You don't have permission to access on this server
string 和 vector 初探
ICMP报文类型
原文地址:https://www.cnblogs.com/chenlhuaf/p/1238566.html
最新文章
Java数据结构(排序篇)
英语,永不止步
HDU 2045不easy系列之三LELE的RPG难题(趋向于DP的递推)
关于synchronized与volatile的一点认识
byte类型取值范围以及溢出具体解释
Qunie——自我生成程序
使用Dropzone上传图片及回显演示样例
centos下载
git init
mergeIDE
热门文章
linux系统的开机流程
RelativeLayout不能居中的解决的方法
nyist oj 19 擅长排列的小明(dfs搜索+STL)
Java Longest Palindromic Substring(最长回文字符串)
ubuntu下vi的使用
php删除数组中指定值的元素
Unity3D 玻璃 Shader
label显示不同颜色的字体
线程专用钩子和全局钩子的差别
POJ 1201 Intervals
Copyright © 2011-2022 走看看