使用 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
原文出处:https://www.cnblogs.com/yxhq/p/12405303.html