zoukankan      html  css  js  c++  java
  • WPF的一种动态切语言方法

    使用 resx 文件,可以动态切换语言,

    新建Lang.zh-CN.resx  Lang.en-US.resx 资源文件

    新建空类Lang.cs

    新建如下类:

    public class LanguageManager : INotifyPropertyChanged
        {
            private readonly ResourceManager _resourceManager;
            private static readonly Lazy<LanguageManager> _lazy = new Lazy<LanguageManager>(() => new LanguageManager());      
            public static LanguageManager Instance => _lazy.Value;
            public event PropertyChangedEventHandler PropertyChanged;
    
            private LanguageManager()
            {
                _resourceManager = new ResourceManager(typeof(Lang));
            }
    
            public string this[string name]
            {
                get
                {
                    if (name == null)
                    {
                        throw new ArgumentNullException(nameof(name));
                    }
                    return _resourceManager.GetString(name);
                }
            }
    
            public void ChangeLanguage(CultureInfo cultureInfo)
            {
                CultureInfo.CurrentCulture = cultureInfo;
                CultureInfo.CurrentUICulture = cultureInfo;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Item[]"));
            }
        }
    View Code

    使用方法:

     <TextBlock FontSize="20" Margin="10" Text="{Binding [String1], Source={x:Static local:LanguageManager.Instance}}"/>
    View Code

    切换语言:

    LanguageManager.Instance.ChangeLanguage(new CultureInfo("zh-CN"));
    View Code


    源码已上传至Github
  • 相关阅读:
    SPOJ 8093 JZPGYZ
    UVA1030 Image Is Everything
    UVA11996 Jewel Magic
    UVA11922 Permutation Transformer
    UVA1479 Graph and Queries
    P3224 [HNOI2012]永无乡
    UVA11020 Efficient Solutions
    UVA12206 Stammering Aliens
    UVA11107 Life Forms
    UVA11019 Matrix Matcher
  • 原文地址:https://www.cnblogs.com/yxhq/p/12405303.html
Copyright © 2011-2022 走看看