当前位置: 首页 > news >正文

WPF多语言实现

参考:https://www.cnblogs.com/chenshibao/p/18937359
开发工具:Visual Studio2022

使用资源字典实现。首先创建在项目下新建多语言目录,新建语言资源

image

en-US.xaml内容

<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:sys="clr-namespace:System;assembly=netstandard"><sys:String x:Key="Home">Home</sys:String><sys:String x:Key="Chinese">Chinese</sys:String><sys:String x:Key="English">English</sys:String>
</ResourceDictionary>

zh-CN.xaml内容

<ResourceDictionaryxmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:sys="clr-namespace:System;assembly=netstandard"><sys:String x:Key="Home">首页</sys:String><sys:String x:Key="Chinese">中文</sys:String><sys:String x:Key="English">英文</sys:String>
</ResourceDictionary>

App.xaml合并资源

<Applicationx:Class="WpfLocalization.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:WpfLocalization"StartupUri="MainWindow.xaml"><Application.Resources><ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source="pack://application:,,,/WPFLocalization;component/Language/zh-CN.xaml" /></ResourceDictionary.MergedDictionaries></ResourceDictionary></Application.Resources>
</Application>

MainWindow.xaml

<Windowx:Class="WpfLocalization.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:local="clr-namespace:WpfLocalization"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"Title="MainWindow"Width="800"Height="450"d:DataContext="{d:DesignInstance Type=local:MainWindowModel}"mc:Ignorable="d"><Grid><StackPanel><StackPanel Orientation="Horizontal"><ButtonPadding="5"Command="{Binding ChangeLanguageCommand}"CommandParameter="zh-CN"Content="{DynamicResource Chinese}" /><ButtonMargin="20,0,0,0"Padding="5"Command="{Binding ChangeLanguageCommand}"CommandParameter="en-US"Content="{DynamicResource English}" /></StackPanel><TextBlock Text="{DynamicResource Home}" /></StackPanel></Grid>
</Window>

MainWindow.xaml.cs的构造方法里面指定DataContext

using System.Windows;namespace WpfLocalization
{/// <summary>/// Interaction logic for MainWindow.xaml/// </summary>public partial class MainWindow : Window{public MainWindow(){InitializeComponent();DataContext = new MainWindowModel();}}
}

MainWindowModel.cs

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;using Prism.Common;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;namespace WpfLocalization
{public partial class MainWindowModel : ObservableObject{/// <summary>/// 切换语言/// </summary>/// <param name="language"></param>[RelayCommand]public void ChangeLanguage(string language){var dictionaries = Application.Current.Resources.MergedDictionaries;// 移除当前语言资源var existingTheme = dictionaries.FirstOrDefault(d => d.Source != null &&(d.Source.OriginalString.Contains("Language/zh-CN.xaml") ||d.Source.OriginalString.Contains("Language/en-US.xaml")));if (existingTheme != null){dictionaries.Remove(existingTheme);}//添加新语言资源dictionaries.Add(new ResourceDictionary() { Source = new Uri("Language/" + language + ".xaml", UriKind.Relative) });}}
}

运行效果
image
image

http://www.rkmt.cn/news/28474.html

相关文章:

  • 16 倍性能提升,成本降低 98%! 解读 SLS 向量索引架构升级改造
  • unity设置外置文件,运行读取文件获取地址
  • Microsoft Agent Framework/C#:了解Workflows的几种不同模式
  • CodeForces-374D Inna and Sequence
  • 字符串过长导致编译报错的问题及解决办法 - 详解
  • 厨房电秤方案:介绍一款电子秤芯片sic8632
  • CF981F Round Marriage
  • macOS直接使用pip安装报错
  • 《借力JBoltAI框架,Java技术开发公司开启高效开发新范式》
  • Wireshark抓包教程:JSON和HTTPS抓取
  • SMARTFORMS去掉数值后面的小数点
  • 数字征程,逐级而上;生态协同,智绘新篇—— 艾拓琪威灏 与 哲讯顺维 数字化战略合作签署暨CRMMES项目启动会隆重举行
  • 2025 年唐山油漆生产厂家最新推荐榜单:精选优质企业,解析专业品牌选购指南唐山油漆批发/唐山油漆生产公司推荐
  • 做题笔记21
  • 权威调研榜单:重庆旧房加层改造公司TOP3榜单好评深度解析
  • 2025 年 MVR 蒸发器源头厂家最新推荐排行榜:聚焦食品医药化工环保领域优质设备,助力企业精准选型
  • Tailwind CSS 使用入门
  • 实用指南:Calico 网络插件在 K8s 集群的作用
  • godot + Avalonia 渲染第三方UI
  • 2025-10-23 cocos安装
  • 用EasyPlayer播国标GB28181算法算力平台EasyGBS视频流,居然比点外卖还简单
  • 测试美化效果
  • idea错误解决记录
  • 2025 年连接器厂家最新推荐榜单:覆盖多领域优质产品,为企业选购提供权威参考的国内制造商精选汽车/高速/板载/航空连接器公司推荐
  • 2025年护栏厂家权威推荐榜单:不锈钢栏杆、桥梁防撞护栏、河道景观护栏等全品类生产供应商精选
  • Windows 10 version 22H2 中文版、英文版下载 (2025 年 10 月更新)
  • CF1140E Palindrome-less Arrays
  • foobar2000下载安装教程:从入门到配置的完整指南(2025最新版)
  • 编织袋定制生产厂家:基于专业测评的技术、工艺及市场优势深度分析
  • 可视化图解算法65:有效的字母异位词