TopViewModel.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using Prism.Commands;
  2. using Prism.Mvvm;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. namespace Venus_MainPages.ViewModels
  10. {
  11. internal class TopViewModel : BindableBase
  12. {
  13. #region 私有字段
  14. private string m_Title;
  15. #endregion
  16. #region 属性
  17. public string Title
  18. {
  19. get { return m_Title; }
  20. set { SetProperty(ref m_Title, value); }
  21. }
  22. #endregion
  23. #region 命令
  24. private DelegateCommand _SwichLanguageCommand;
  25. public DelegateCommand SwichLanguageCommand =>
  26. _SwichLanguageCommand ?? (_SwichLanguageCommand = new DelegateCommand(OnSwitchLanguage));
  27. #endregion
  28. #region 构造函数
  29. public TopViewModel()
  30. {
  31. Title = "Venus";
  32. }
  33. #endregion
  34. #region 方法
  35. private void OnSwitchLanguage()
  36. {
  37. List<ResourceDictionary> dictionaryList = new List<ResourceDictionary>();
  38. foreach (ResourceDictionary dictionary in Application.Current.Resources.MergedDictionaries)
  39. {
  40. if (dictionary.Source != null)
  41. {
  42. dictionaryList.Add(dictionary);
  43. }
  44. }
  45. string requestedCulture1 = @"/Venus_Themes;component/Languages/StringResources.en-US.xaml";
  46. string requestedCulture2 = @"/Venus_Themes;component/Languages/StringResources.zh-CN.xaml";
  47. ResourceDictionary resourceDictionary1 = dictionaryList.FirstOrDefault(d => d.Source.OriginalString.Equals(requestedCulture1));
  48. ResourceDictionary resourceDictionary2 = dictionaryList.FirstOrDefault(d => d.Source.OriginalString.Equals(requestedCulture2));
  49. if (dictionaryList.IndexOf(resourceDictionary1) < dictionaryList.IndexOf(resourceDictionary2))
  50. {
  51. Application.Current.Resources.MergedDictionaries.Remove(resourceDictionary1);
  52. Application.Current.Resources.MergedDictionaries.Add(resourceDictionary1);
  53. }
  54. else
  55. {
  56. Application.Current.Resources.MergedDictionaries.Remove(resourceDictionary2);
  57. Application.Current.Resources.MergedDictionaries.Add(resourceDictionary2);
  58. }
  59. }
  60. #endregion
  61. }
  62. }