使用 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