精华内容
下载资源
问答
  • WPF语言切换

    千次阅读 2017-08-09 17:26:01
    最近在用wpf做一个项目,需要提供中文和俄文切换,这是效果图 1.在程序根目录下新建两个资源词典文件 ,注意加上:xmlns:sys="clr-namespace:System;assembly=mscorlib” 中文:“zh-CN.xaml” xmlns:x=...

              最近在用wpf做一个项目,需要提供中文和俄文切换,这是效果图

    1.在程序根目录下新建两个资源词典文件 ,注意加上:xmlns:sys="clr-namespace:System;assembly=mscorlib”

    中文:“zh-CN.xaml”

    <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"
                         xmlns:local="clr-namespace:JNTApp">
        <!--登录-->
        <sys:String x:Key="WinLogin">登录</sys:String>
        <sys:String x:Key="txtAccount">账号:</sys:String>
        <sys:String x:Key="txtPasswd">密码:</sys:String>
        <sys:String x:Key="cobChoose">选择语言:</sys:String>
        <sys:String x:Key="chkSave">记住密码</sys:String>
        <sys:String x:Key="chkAuto">自动登录</sys:String>
        <sys:String x:Key="btnLogin">登录</sys:String>
        <sys:String x:Key="btnCancel">取消</sys:String>
        <sys:String x:Key="cobCh">中文</sys:String>
        <sys:String x:Key="cobEw">俄文</sys:String>

    </ResourceDictionary>

      俄文:“ru.xaml”

    <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"
                        xmlns:local="clr-namespace:JNTApp">
        <!--войти-->
        <sys:String x:Key="WinLogin">войти</sys:String>
        <sys:String x:Key="txtAccount">Логин:</sys:String>
        <sys:String x:Key="txtPasswd">Пароль:</sys:String>
        <sys:String x:Key="cobChoose">выбор языка:</sys:String>
        <sys:String x:Key="chkSave">запомнить Пароль</sys:String>
        <sys:String x:Key="chkAuto">автоматический вход</sys:String>
        <sys:String x:Key="btnLogin">войти</sys:String>
        <sys:String x:Key="btnCancel">отменить</sys:String>
        <sys:String x:Key="cobCh">китайский язык</sys:String>
        <sys:String x:Key="cobEw">русский язык</sys:String>

    </ResourceDictionary>

    定义完成之后,在界面引用; Text="{DynamicResource txtAccount}"

    2.在App.xaml加上

    <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="ru.xaml"/>
                    <ResourceDictionary Source="zh-CN.xaml"/>
               </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>

    3.在App.xaml.cs加一个方法

     

     private void Application_Startup(object sender, StartupEventArgs e)
            {
     
                Application currApp = Application.Current;
                currApp.StartupUri = new Uri("SignWindow.xaml", UriKind.RelativeOrAbsolute);
    //调用方法
                LoadLanguage();
            }
    //加载语言
            private void LoadLanguage()
            {
                CultureInfo currentCultureInfo = CultureInfo.CurrentCulture;
                ResourceDictionary langRd = null;
                try
                {
                    langRd =
                    Application.LoadComponent(
                    new Uri(currentCultureInfo.Name + ".xaml", UriKind.Relative)) as ResourceDictionary;
                }
                catch
                {
                }
                if (langRd != null)
                {
                    if (this.Resources.MergedDictionaries.Count > 0)
                    {
                        this.Resources.MergedDictionaries.Clear();
                    }
                    this.Resources.MergedDictionaries.Add(langRd);
                }
            }
     
    4.登录时,首先初始化默认是哪种语言,我这边默认的是中文

     

     

     public SignWindow()
            {
                InitializeComponent();
                currentLang = "zh-CN";
                Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
     
            }
     
    5.切换语言
       //登录成功后跳转到主界面
     private MainWindow MainWindow;
     
     /// <summary>
            /// 语言选择
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
           private void cobChoose_DropDownClosed(object sender, EventArgs e)
            {
                string language = this.cobChoose.Text;
                //语言类型
                string languageType = "";
                if (!string.IsNullOrEmpty(language))
                {
                    switch (language)
                    {
                        case "中文": languageType = "zh-CN"; break;
                        case "俄文": languageType = "ru"; break;
                        case "китайский язык": languageType = "zh-CN"; break;
                        case "русский язык": languageType = "ru"; break;
     
                    }
                    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
                     //切换语言的方法
                    ChangeLanguage.change(languageType, this);
                    if (MainWindow != null)
                    {
                        ChangeLanguage.change(languageType, MainWindow);
                    }
                    currentLang = languageType;
                     //定义一个session来保存当前选中的语言,供其它界面使用
                    Variable.LanguageSeesion = currentLang;
                }
            }
       
    6.切换语言的方法,定义一个ChangeLanguage类
     static  class ChangeLanguage
        {
         // 这个是window窗体
            public static  void change(string currentLang,Window w)
            {
              System.Windows.ResourceDictionary langRd = null;
     
                CultureInfo currentCultureInfo = CultureInfo.CurrentCulture;
                try
                {
                    langRd =
                   System.Windows.Application.LoadComponent(
                    new Uri(currentLang + ".xaml", UriKind.Relative)) as ResourceDictionary;
                }
                catch
                {
                }
                if (langRd != null)
                {
                    if (w.Resources.MergedDictionaries.Count > 0)
                    {
                        w.Resources.MergedDictionaries.Clear();
                    }
                    w.Resources.MergedDictionaries.Add(langRd);
                }
     
            }
     
    //这个是page页面
            public static void changePage(string currentLang)
            {
                System.Windows.ResourceDictionary langRd = null;
     
                CultureInfo currentCultureInfo = CultureInfo.CurrentCulture;
                try
                {
                    langRd =
                   System.Windows.Application.LoadComponent(
                    new Uri(currentLang + ".xaml", UriKind.Relative)) as ResourceDictionary;
                }
                catch
                {
                }
                if (langRd != null)
                {
                    Application.Current.Resources.MergedDictionaries.Clear();
                    Application.Current.Resources.MergedDictionaries.Add(langRd);
                 
                }
     
            }
     
        }
     

     

    第一次写博客,只管贴代码,有些地方可能没说清楚,不过看代码应该能看清楚吧

     

     

     

     

    展开全文
  • WPF简单语言切换源码

    2021-05-01 12:52:11
    一、源码描述 这是一款有关基于WPF技术语言切换的小程序,功能比较简单主要实现了窗体语言切换的功能, 仅供新手学习交流使用,有需要的朋友可以下载学习一下。二、注意事项 1、开发环境为Visual Studio 2010,无...
  • WPF 多国语言实现与动态切换当前使用的语言
  • wpf语言切换 且有MessageBox的多语言 wpf语言切换 且有MessageBox的多语言
  • <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="1.xmal"></ResourceDictionary> <Reso...
    <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="1.xmal"></ResourceDictionary>
                    <ResourceDictionary Source="2.xmal"></ResourceDictionary>
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>

     

    描述
     
     合并多个外部资源字典成为本地字典。当需要合并更多字典的时候只要在ResourceDictionary.MergedDictionaries节中顺序增加引用。
     
    特别提示
     
     合并字典(MergedDictionaries 集合中的字典)中对同一对象的同一子元素进行定义的时候,会产生覆盖效果:在这种情况下,所返回的资源将来自在 MergedDictionaries 集合中最后一个找到的字典。(在这里会显示myresourcedictionary2.xaml中的定义)。
     
    合并字典(MergedDictionaries 集合中的字典)中对同一对象的不同子元素定义的时候会产生叠加效果。
     
    动态换肤,也就是后台更改合并资源
     
    合并资源放在APP级:姜彦201808191332
     
    Application.Current.Resources.MergedDictionaries.Clear();               
    ResourceDictionary newRD = new ResourceDictionary();               
    newRD.Source = new Uri("1.xaml", UriKind.Relative);               
    Application.Current.Resources.MergedDictionaries.Add(newRD);
     
    合并资源放在Window级: 非常有效 姜彦201808191332
     
    this.Resources.MergedDictionaries.Clear();               
    ResourceDictionary newRD = new ResourceDictionary();               
    newRD.Source = new Uri("1.xaml", UriKind.Relative);                       
    this.Resources.MergedDictionaries.Add(newRD);
     
    如果有多个资源合并在一起,只想更改某个资源,可以这样更改 非常有效 姜彦201808191332
     
    ResourceDictionary newRD = new ResourceDictionary();newRD.Source = new Uri("1.xaml", UriKind.Relative);
    Application.Current.Resources.MergedDictionaries[0] = newRD;
    自己备注:根据你在App.xaml中的位置,决定数组的index 非常有效 姜彦201808191332
    例如:

    ResourceDictionary newRD = new ResourceDictionary();
    newRD.Source = new Uri("/Utility.Tool.Language;component/Language/en_US.xaml", UriKind.Relative);
    Application.Current.Resources.MergedDictionaries[7] = newRD;

    转载于:https://www.cnblogs.com/jiangyan219/articles/9516732.html

    展开全文
  • WPF 实现语言在线切换

    2019-09-26 14:42:32
    WPF应用怎么实现在线切换语言功能,方法可以有好多种: 一、开发两套界面,在点击切换语言时调用相应的界面,最low 二、通过读取事先做好的语言对照表,可以使excel文件、xml文件等,加载之后保存在全局字典或者...

    WPF应用怎么实现在线切换语言功能,方法可以有好多种:

    一、开发两套界面,在点击切换语言时调用相应的界面,最low

    二、通过读取事先做好的语言对照表,可以使excel文件、xml文件等,加载之后保存在全局字典或者datatable中都行,从而进行语言切换

    三、利用WPF中的动态加载资源字典进行切换。

    下面就第三种方法进行阐述:

    第一步:使用资源字典,首先新建两个字典文件en-us.xaml、zh-cn.xaml。定义中英文的字符串在这里面【注意:添加xmlns:s="clr-namespace:System;assembly=mscorlib】

    zh-cn.xam如下:

     

    <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="biFile">文件</sys:String>
        <sys:String x:Key="biHelp">帮助</sys:String>
        <sys:String x:Key="biAbout">关于</sys:String>
        <sys:String x:Key="biName">产品名称:</sys:String>
        <sys:String x:Key="biCopyRight">版权所有:</sys:String>
        <sys:String x:Key="biWeb">公司网址:</sys:String>
        <sys:String x:Key="biVersion">版本号:</sys:String>
        <sys:String x:Key="biSelectDevice">选择设备</sys:String>
        <sys:String x:Key="biClose">关闭</sys:String>
        <sys:String x:Key="biSetting">设置</sys:String>
        <sys:String x:Key="biLanguage">语言</sys: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:sys="clr-namespace:System;assembly=mscorlib">
        <sys:String x:Key="biFile">File</sys:String>
        <sys:String x:Key="biHelp">Help</sys:String>
        <sys:String x:Key="biAbout">About</sys:String>
        <sys:String x:Key="biName">Product Name:</sys:String>
        <sys:String x:Key="biCopyRight">CopyRight:</sys:String>
        <sys:String x:Key="biWeb">Web:</sys:String>
        <sys:String x:Key="biVersion">Version:</sys:String>
        <sys:String x:Key="biSelectDevice">Choose Device</sys:String>
        <sys:String x:Key="biClose">Close</sys:String>
        <sys:String x:Key="biSetting">Setting</sys:String>
        <sys:String x:Key="biLanguage">Language</sys:String>
    </ResourceDictionary>

    第二步:讲两个资源字典添加到App.xaml中,这里注意下,因为两个字典中有同样字符,如果没有动态更改,默认后添加的生效
    App.xaml如下:
    <Application x:Class="CANTest.App"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:dxe="http://schemas.devexpress.com/winfx/2008/xaml/editors"
                 xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
                 StartupUri="MainWindow.xaml" Startup="OnAppStartup_UpdateThemeName" Exit="Application_Exit">
        <Application.Resources>
            <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>                
                    <ResourceDictionary Source="Language\StringResource.zh-CN.xaml" />
                    <ResourceDictionary Source="Language\StringResource.en-US.xaml" />
                </ResourceDictionary.MergedDictionaries>
            </ResourceDictionary>
        </Application.Resources>
    </Application>

    第三步:在Properties.Settings中添加应用程序设置,保存上次关闭程序的语言环境

    第四步:在App.Xaml.cs中添加必要的更新语言函数,动态切换,重新加载资源文件

    using System;
    using System.Collections.Generic;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Windows;
    using DevExpress.Xpf.Core;
    using System.Threading;
    using System.Globalization;
    
    namespace WPFApplication
    {
        /// <summary>
        /// Interaction logic for App.xaml
        /// </summary>
        public partial class App : Application
        {
            private void OnAppStartup_UpdateThemeName(object sender, StartupEventArgs e)
            {
                DevExpress.Xpf.Core.ApplicationThemeHelper.UpdateApplicationThemeName();
            }
            public static string Language { get; set; }
    
            protected override void OnStartup(StartupEventArgs e)
            {
                base.OnStartup(e);
    
                GetLanguage();
            }
            private void Application_Exit(object sender, ExitEventArgs e)
            {           
                SaveLanguage();
                //关闭所有线程,即关闭此进程
                System.Environment.Exit(0);
    
                //MessageBoxManager.Unregister();
            }
    
            #region Method
            /// <summary>
            /// 开机启动默认的语言
            /// </summary>
            private void GetLanguage()
            {
                Language = string.Empty;
                try
                {
                    Language = CANTest.Properties.Settings.Default.Language.Trim();
                }
                catch (Exception)
                {
                }
                Language = string.IsNullOrEmpty(Language) ? "en-US" : Language;
    
                //update Language
                UpdateLanguage();
            }
            /// <summary>
            /// 保存语言设置
            /// </summary>
            private void SaveLanguage()
            {
                try
                {
                    CANTest.Properties.Settings.Default.Language = Language;
                    CANTest.Properties.Settings.Default.Save();
                }
                catch (Exception)
                {
                }
            }
            /// <summary>
            /// 更换语言包
            /// </summary>
            public static void UpdateLanguage()
            {
                List<ResourceDictionary> dictionaryList = new List<ResourceDictionary>();
                foreach (ResourceDictionary dictionary in Application.Current.Resources.MergedDictionaries)
                {
                    dictionaryList.Add(dictionary);
                }
                string requestedLanguage = string.Format(@"Language\StringResource.{0}.xaml", Language);
                ResourceDictionary resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString.Equals(requestedLanguage));
                if (resourceDictionary == null)
                {
                    requestedLanguage = @"Language\StringResource.en-US.xaml";
                    resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString.Equals(requestedLanguage));
                }
                if (resourceDictionary != null)
                {
                    Application.Current.Resources.MergedDictionaries.Remove(resourceDictionary);
                    Application.Current.Resources.MergedDictionaries.Add(resourceDictionary);
                }
            }
            #endregion
        }
    }

    第五步:在界面设计器中需要显示的位置添加动态资源

    例如:
     <Button x:Name="buttonNewTaskWindow" Content="{DynamicResource File}"/>
    <Button x:Name="buttonProperty" Content="{DynamicResource Help}"/>
     
    第六步:增加选择语言命令
    /// <summary>
            /// 语言选择命令
            /// </summary>
            private static RoutedUICommand chooseLanguage = new RoutedUICommand("ChooseLanguage", "ChooseLanguage", typeof(Commands));
            public static RoutedUICommand ChooseLanguage
            {
                get { return chooseLanguage; }
            }
    
    
    #region 中英文切换
            private void ChooseLanguage_CanExecute(object sender, CanExecuteRoutedEventArgs e)
            {
                e.CanExecute = true;
                e.Handled = true;
            }
    
            private void ChooseLanguage_Executed(object sender, ExecutedRoutedEventArgs e)
            {
                //英文
                if (e.Parameter.ToString() == "en")
                {
                    App.Language = "en-US";
                }
                //中文
                else if (e.Parameter.ToString() == "zh")
                {
                    App.Language = "zh-CN";
                }
                App.UpdateLanguage();
            }
    
            #endregion

     

     

    转载于:https://www.cnblogs.com/SparkZG/p/7443850.html

    展开全文
  • WPF 语言切换

    2020-07-11 22:23:50
    用动态资源,不同语言储存为不同的资源字典。 https://bestminipc.github.io/posts/a747d650/ https://www.cnblogs.com/duan425/p/5484501.html 2.。所有语言,储存为一个xml文件,不同语言,通过找 xml下的...

    1。 用动态资源,不同语言储存为不同的资源字典。

    https://bestminipc.github.io/posts/a747d650/

    https://www.cnblogs.com/duan425/p/5484501.html

     

    2.。所有语言,储存为一个xml文件,不同语言,通过找 xml下的不同path, 进行。

    实现的时候,需要,在每个控件出,指出path

    https://www.cnblogs.com/yang-fei/p/4854460.html

    展开全文
  • 关于wpf切换语言需要ADD和Remove操作的原因探索 在wpf中常使用资源字典的方式进行语言的切换,而常用的语言的切换操作就是先remove,然后再对该资源add操作,其根本原因是由于资源解析器在对资源字典解析的时候,...
  • wpf 国际化语言切换

    2014-01-08 09:21:26
    wpf 实现程序运行中动态切换程序语言,此方法非常简单,实现方式是扩展标记语言实现。
  • C# WPF 动态切换多国语言支持

    千次阅读 2018-11-17 17:53:08
    WPF支持多国语言方式大同小异,本文将介绍使用资源字典文件实现多国语言动态切换,其不仅可以实现UI显示语言的切换,也可以实现控件对应绑定数据的语言切换,整体操作可行且较容易实现。... 随意切换语言 一....
  • WPF语言动态切换

    2020-08-24 10:30:35
    定义多语言类: using LanguageTest.Resources; using System; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Resources; using System.Text; ...
  • Dev的WPF控件在.net core程序中无法切换语言? 试试在App.cs文件中加入以下代码吧 public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { AssemblyLoadContext....
  • WPF语言切换,国际化

    2017-06-13 17:17:00
    WPF语言切换跟winform不一样的地方在于需要自己添加资源文件,并且这个资源文件可以写一个,也可以写多个。 // 英文资源文件:enus.xaml <ResourceDictionary xmlns=...
  • WPF语言化的实现

    2019-07-12 23:13:34
    WPF多语言化的实现  Metro插件系统系列就暂时停一下,这次我们讨论一下WPF的资源本地化实现,主要用到的:CultureInfo,...可在程序运行时,实时切换语言 CultureInfo  CultureInfo类表示有关特定区域性的信息,...
  • wpf语言 支持demo

    2008-05-14 10:47:17
    wpf语言 支持demo
  • WPF语言实现

    2018-05-28 17:13:00
    WPF语言实现 原文:WPF语言实现很多国际化的程序都提供了多语言的选项,这样方便不同国家的使用者更方便的使用软件。这篇博客中将介绍在WPF中实现多语言的方式。 方式一,使用WPF动态资源的方式...
  • wpf语言实现源码

    2011-04-22 15:29:40
    wpf简单方便的多语言界面自动切换,网上有其他实现,不过都比较复杂
  • WPF 多国语言 localization

    千次阅读 2013-10-08 20:49:16
    1.让界面上所有能够出现的label都使用动态资源(DynamicResource)这样我们在切换语言的时候程序界面上的字符才会自动切换,这里我们举个简单的TextBlock的例子,原本也许你会直接写 但是如果需要国际化,那么你...
  • WPF多国语言解决方案

    热门讨论 2012-06-20 09:39:31
    终极实现WPF应用程序支持多国语言解决方案的源码下载
  • WPF国际化&语言切换

    2020-05-13 22:09:13
    WPF国际化建议使用官方推荐方式,当然也可以通过自己写个类实现,没必要重复造轮子,如下记录过程 添加资源文件 新建文件,并按照语言命名 适当修改生成文件,添加字符lib <ResourceDictionary xmlns=...
  • WPF实现多国语言

    2016-07-28 10:01:46
    WPF应用程序中搭建多语言支持(Multilingual Support)是...这点很有意义--法国用户喜欢安装、运行、并马上使用软件,而不会再一个不熟悉的应用程序中找到切换语言的地方。 允许UI可拓展以便翻译,缩减可能的裁剪文本。 ...
  • WPF语言方案

    2012-02-06 10:28:00
    SourceCode: ... 简介: ...MSDN 推荐了一个WPF语言方案--使用Locbaml,是个半成品,而且也不够灵活. 此多语方案修改自: http://www.codeproject.com/Articles/35159/WPF-Localization-Using-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,228
精华内容 891
关键字:

wpf切换语言