使用 resx 文件,可以動態切換語言, 新建Lang.zh-CN.resx Lang.en-US.resx 資源文件 新建空類Lang.cs 新建如下類: public class LanguageManager : INotifyPropertyChanged { private readonl ...
使用 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
源碼已上傳至Gitgub