WPF 中英文多语言切换动态加载资源字典的方式
时间:2021-08-16
本文章向大家介绍WPF 中英文多语言切换动态加载资源字典的方式,主要包括WPF 中英文多语言切换动态加载资源字典的方式使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
XAML:
<Grid>
<StackPanel Margin="20">
<Button x:Name="buttonNewTaskWindow" Height="30" Width="100" Content="{DynamicResource buttonNewTaskWindow}"/>
<Button x:Name="buttonProperty" Height="30" Width="100" Margin="0 20 0 0" Content="{DynamicResource buttonProperty}"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="0 20 0 0">
<RadioButton x:Name="rdbChinese" Content="简体中文" Checked="rdbChinese_Checked"/>
<RadioButton x:Name="rdbFChinese" Content="繁體中文" Checked="rdbFChinese_Checked"/>
<RadioButton x:Name="rdbEnglish" Content="English" Checked="rdbEnglish_Checked"/>
</StackPanel>
</StackPanel>
</Grid
CodeBehind:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
rdbChinese.IsChecked = true;
}
private void rdbEnglish_Checked(object sender, RoutedEventArgs e)
{
UpdateLanguage(@"en-us.xaml");
}
private void rdbChinese_Checked(object sender, RoutedEventArgs e)
{
UpdateLanguage(@"zh-cn.xaml");
}
private void rdbFChinese_Checked(object sender, RoutedEventArgs e)
{
UpdateLanguage(@"ft.xaml");
}
private void UpdateLanguage(string resourcePath)
{
List<ResourceDictionary> dictionaryList = new List<ResourceDictionary>();
foreach (ResourceDictionary dictionary in Application.Current.Resources.MergedDictionaries)
{
dictionaryList.Add(dictionary);
}
ResourceDictionary resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString.Equals(resourcePath));
Application.Current.Resources.MergedDictionaries.Remove(resourceDictionary);
Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
}
}
zh-cn.xaml :
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:CsWPFTest">
<s:String x:Key="buttonNewTaskWindow">新建任务</s:String>
<s:String x:Key="buttonProperty">任务属性</s:String>
</ResourceDictionary>
en-us.xaml :
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:CsWPFTest">
<s:String x:Key="buttonNewTaskWindow">New Task</s:String>
<s:String x:Key="buttonProperty">Task Property</s:String>
</ResourceDictionary>
ft.xaml :
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:CsWPFTest">
<s:String x:Key="buttonNewTaskWindow">新建任務</s:String>
<s:String x:Key="buttonProperty">任務屬性</s:String>
</ResourceDictionary>
App.XAML:
<Application x:Class="CsWPFTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CsWPFTest"
StartupUri="MainWindow.xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="ft.xaml"/>
<ResourceDictionary Source="en-us.xaml"/>
<ResourceDictionary Source="zh-cn.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
原文地址:https://www.cnblogs.com/huvjie/p/15149323.html
- 剑指OFFER之合并有序链表(九度OJ1519)
- Android Studio快捷键每日一练(6)
- Linux文本流
- Linux并发与同步
- Android Studio快捷键每日一练(5)
- 2017年移动行业五大发展趋势及2018年前景展望(下)
- 剑指OFFER之反转链表(九度OJ1518)
- Android Studio快捷键每日一练(4)
- Android Studio快捷键每日一练(3)
- 一分钟教你在博客园中制作自己的动态云球形标签页
- Python标准库06 子进程 (subprocess包)
- 摩拜、美团也伸手共享汽车拉!众多品牌里面,这三家最牛!
- Android Studio快捷键每日一练(2)
- Linux进程间通信
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 搞懂 SQL 查询优化原理分析,秒速处理大数据量查询
- 日历时间格式Date与Calender
- 使用 SpringBoot AOP 记录操作日志、异常日志
- java写一个音乐播放程序,同时显示歌词
- 使用反射获取注解中的内容
- 记一次企业微信对接踩坑之旅(ಥ_ಥ)
- 图解 SQL,这也太形象了吧!
- 函数式接口小结
- 冒泡排序+选择排序+插入排序+图与代码
- [解锁新姿势] 分享 7 个优化代码的技巧
- 常量池与堆中放入String数据,比较大小
- Could not find artifact org.apache.tomcat.maven:tomcat7-maven-plugin:pom.....
- try{}catch{}finally{}运行后的执行结果
- MySQL死锁产生原因和解决方法
- 文件操作与文件夹操作