using System; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Resources; using System.Text; using System.Threading; namespace MaterialTraceabilityUI.Resources { public class LanguageManager : INotifyPropertyChanged { /// /// 资源 /// private readonly ResourceManager _resourceManager; /// /// 懒加载 /// private static readonly Lazy _lazy = new Lazy(() => new LanguageManager()); public static LanguageManager Instance => _lazy.Value; public event PropertyChangedEventHandler PropertyChanged; public LanguageManager() { //获取此命名空间下Resources的Lang的资源,Lang可以修改 _resourceManager = new ResourceManager("MaterialTraceabilityUI.Resources.Lang", typeof(LanguageManager).Assembly); } /// /// 索引器的写法,传入字符串的下标 /// /// /// /// public string this[string name] { get { if (name == null) { throw new ArgumentNullException(nameof(name)); } return _resourceManager.GetString(name); } } public void ChangeLanguage(CultureInfo cultureInfo) { // 获取当前线程 var currentThread = Thread.CurrentThread; currentThread.CurrentCulture = cultureInfo; currentThread.CurrentUICulture = cultureInfo; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("item[]")); //字符串集合,对应资源的值 } } }