zoukankan      html  css  js  c++  java
  • WPF多语言功能简单示例

    一.本功能的原理

    1为不同语言创建不同的资源文件,如en-us.xamlzh-cn.xaml

    2、在App.xaml加载时根据配置文件的值读取不同的资源文件

    3、在各窗体的xaml文件中利用动态绑定显示资源文件内容

    4、更改不同语言需修改配置文件的值并重新启动程序,也可获取当前操作系统的语言类型在启动时读取不同的语言资源文件

     

    en-us.xaml(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">

        <s:String x:Key="MainWindowTitle">Localization Demos</s:String>

        <s:String x:Key="LanguageMenuHeader">_Languages</s:String>

        <s:String x:Key="EnglishMenuHeader">_Englishs</s:String>

        <s:String x:Key="ChineseMenuHeader">_EnglishsHeader</s:String>

        <s:String x:Key="OpenLanguageFileMenuHeader">_Open Language Files</s:String>

    </ResourceDictionary>

     

     创建配置文件并读取(需引入System.configuration)

      <appSettings>

        <add key="Lang" value="/Resources/Langs/en-us.xaml" />

      </appSettings>

     

    public partial class App : Application

        {

            protected override void OnStartup(StartupEventArgs e)

            {

                base.OnStartup(e);

                string langType = ConfigurationManager.AppSettings.Get("Lang");

                App.Current.Resources.MergedDictionaries.Add(new ResourceDictionary() { Source = new Uri(langType, UriKind.RelativeOrAbsolute) });

            }

    }

    动态绑定:

        <StackPanel VirtualizingStackPanel.VirtualizationMode="Recycling" HorizontalAlignment="Left" VerticalAlignment="Top">

            <Label Content="{DynamicResource MainWindowTitle}"/>

            <Label Content="{DynamicResource LanguageMenuHeader}"/>

            <Label Content="{DynamicResource EnglishMenuHeader}"/>

            <Label Content="{DynamicResource ChineseMenuHeader}"/>

            <Label Content="{DynamicResource OpenLanguageFileMenuHeader}"/>

        </StackPanel>

    修改配置文件值:

      XmlDocument doc = new XmlDocument();

                doc.Load(path);

                XmlNode node = doc.SelectSingleNode(@"//add[@key='Lang']");

                XmlElement ele = (XmlElement)node;

                ele.SetAttribute("value", Type);

                doc.Save(path);

  • 相关阅读:
    debug: if (va=1) 和 if (va==1)的区别
    必定管用!关于如何在电脑上恢复itunes中的音乐库(Mac Windows统统适用)
    关于Matlab中自动生成的asv文件
    LaTeX表格字体大小控制
    ANSYS中应力强度因子与J积分的计算
    Notepad++取消输入单词时出现提示
    notepad++的apdl高亮xml文件
    Power Graphics
    19个必须知道的Visual Studio快捷键
    APDL命令流:将ansys分析结果输出为tecplot格式
  • 原文地址:https://www.cnblogs.com/gossip/p/2073340.html
Copyright © 2011-2022 走看看