当前位置: 移动技术网 > IT编程>开发语言>.net > WPF的一种动态切语言方法

WPF的一种动态切语言方法

2020年03月09日  | 移动技术网IT编程  | 我要评论

最爱贵公子,都市鬼道士,千名

使用 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[]"));
        }
    }

使用方法:

 <textblock fontsize="20" margin="10" text="{binding [string1], source={x:static local:languagemanager.instance}}"/>

切换语言:

languagemanager.instance.changelanguage(new cultureinfo("zh-cn"));


源码已上传至gitgub

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网