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);

  • 相关阅读:
    Django auth组件
    Django 中间件实现用户认证与IP频率限制
    Django 中间件
    Django forms组件
    Django Cookie于Session
    Django分页器
    flask之route中的参数
    Flask之endpoint错误View function mapping is overwriting an existing endpoint function: ***
    Centos6.5 安装python2.7.14
    发布django项目
  • 原文地址:https://www.cnblogs.com/gossip/p/2073340.html
Copyright © 2011-2022 走看看