RoleViewModel.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. using Prism.Commands;
  2. using Prism.Mvvm;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Collections.ObjectModel;
  6. using System.ComponentModel;
  7. using System.Linq;
  8. using Venus_Core;
  9. using Venus_Unity;
  10. using RoleDefine = Venus_MainPages.Roles.RoleDefine;
  11. using Menu = Venus_MainPages.Roles.Menu;
  12. using Venus_MainPages.Views;
  13. using Venus_MainPages.Roles;
  14. using System.Windows.Data;
  15. using WPF.Themes.UserControls;
  16. using System.IO;
  17. namespace Venus_MainPages.ViewModels
  18. {
  19. internal class RoleViewModel : BindableBase
  20. {
  21. #region 私有属性
  22. List<VenusMenu> m_venusMenus = new List<VenusMenu>();
  23. //ObservableCollection<Menu> m_Menus = new ObservableCollection<Menu>();
  24. ICollectionView vm;
  25. ObservableCollection<string> m_Roles = new ObservableCollection<string>();
  26. ObservableCollection<RoleDefine> m_RoleDefines = new ObservableCollection<RoleDefine>();
  27. private bool firstLoad = true;
  28. private RoleView roleView;
  29. private RoleDefine m_CurrentRoleDefine;
  30. #endregion
  31. #region 依赖项属性
  32. public List<VenusMenu> VenusMenus
  33. {
  34. get { return m_venusMenus; }
  35. set
  36. {
  37. SetProperty(ref m_venusMenus, value);
  38. }
  39. }
  40. //public ObservableCollection<Menu> Menus
  41. //{
  42. // get { return m_Menus; }
  43. // set
  44. // {
  45. // SetProperty(ref m_Menus, value);
  46. // }
  47. //}
  48. public ObservableCollection<string> Roles
  49. {
  50. get
  51. {
  52. return m_Roles;
  53. }
  54. set
  55. {
  56. SetProperty(ref m_Roles, value);
  57. }
  58. }
  59. public ObservableCollection<RoleDefine> RoleDefines
  60. {
  61. get { return m_RoleDefines; }
  62. set
  63. {
  64. SetProperty(ref m_RoleDefines, value);
  65. }
  66. }
  67. public RoleDefine CurrentRoleDefine
  68. {
  69. get { return m_CurrentRoleDefine; }
  70. set
  71. {
  72. SetProperty(ref m_CurrentRoleDefine, value);
  73. }
  74. }
  75. #endregion
  76. #region 命令
  77. private DelegateCommand _SaveCommand;
  78. public DelegateCommand SaveCommand =>
  79. _SaveCommand ?? (_SaveCommand = new DelegateCommand(OnSave));
  80. private DelegateCommand<Object> _LoadedCommand;
  81. public DelegateCommand<Object> LoadedCommand =>
  82. _LoadedCommand ?? (_LoadedCommand = new DelegateCommand<Object>(OnLoaded));
  83. #endregion
  84. public RoleViewModel()
  85. {
  86. string configPath = "";
  87. if (File.Exists($"Config/UIMenu.json"))
  88. {
  89. configPath = $"Config/UIMenu.json";
  90. }
  91. else if (File.Exists($"Config/Menu.json"))
  92. {
  93. configPath = $"Config/Menu.json";
  94. }
  95. else
  96. {
  97. //WPFMessageBox.ShowError("未发现UI Config配置文件,退出UI");
  98. }
  99. RoleDefines = SerializeHelper.Instance.ReadFromJsonFile<ObservableCollection<RoleDefine>>(configPath);
  100. for (int i = 0; i < RoleDefines.Count; i++)
  101. {
  102. Roles.Add(RoleDefines[i].RoleName);
  103. }
  104. //Roles.Add("Manager");
  105. //Roles.Add("Engineer");
  106. //Roles.Add("Technician");
  107. //Roles.Add("Operator");
  108. }
  109. private void OnSave()
  110. {
  111. //for (int i = 0; i < RoleDefines.Count; i++)
  112. //{
  113. // for (int j = 0; j < RoleDefines[i].Menus.Count; j++)
  114. // {
  115. // RoleDefines[i].Menus[j].Permission = MenuPermission.ReadWrite;
  116. // }
  117. //}
  118. SerializeHelper.Instance.WriteToJsonFile<List<RoleDefine>>(RoleDefines.ToList(), "Config/UIMenu.json");
  119. }
  120. private void OnLoaded(Object myrecipeView)
  121. {
  122. if (firstLoad == true)
  123. {
  124. roleView = myrecipeView as RoleView;
  125. roleView.roleTreeView.SelectedItemChanged += RoleTreeView_SelectedItemChanged;
  126. }
  127. }
  128. private void RoleTreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
  129. {
  130. int index = Roles.IndexOf(e.NewValue.ToString());
  131. CurrentRoleDefine = RoleDefines[index];
  132. vm = CollectionViewSource.GetDefaultView(CurrentRoleDefine.Menus);
  133. vm.GroupDescriptions.Clear();
  134. vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu"));
  135. }
  136. }
  137. }