RoleViewModel.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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 System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.Controls;
  11. using System.Windows.Data;
  12. using Venus_Core;
  13. using Venus_Unity;
  14. using RoleDefine = Venus_MainPages.Roles.RoleDefine;
  15. using Menu = Venus_MainPages.Roles.Menu;
  16. using Venus_MainPages.Views;
  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. #endregion
  30. #region 依赖项属性
  31. public List<VenusMenu> VenusMenus
  32. {
  33. get { return m_venusMenus; }
  34. set
  35. {
  36. SetProperty(ref m_venusMenus, value);
  37. }
  38. }
  39. public ObservableCollection<Menu> Menus
  40. {
  41. get { return m_Menus; }
  42. set
  43. {
  44. SetProperty(ref m_Menus, value);
  45. }
  46. }
  47. public ObservableCollection<string> Roles
  48. {
  49. get
  50. {
  51. return m_Roles;
  52. }
  53. set
  54. {
  55. SetProperty(ref m_Roles, value);
  56. }
  57. }
  58. public ObservableCollection<RoleDefine> RoleDefines
  59. {
  60. get { return m_RoleDefines; }
  61. set
  62. {
  63. SetProperty(ref m_RoleDefines, value);
  64. }
  65. }
  66. #endregion
  67. private DelegateCommand _SaveCommand;
  68. public DelegateCommand SaveCommand =>
  69. _SaveCommand ?? (_SaveCommand = new DelegateCommand(OnSave));
  70. private DelegateCommand<object> _CheckedCommand;
  71. public DelegateCommand<object> CheckedCommand =>
  72. _CheckedCommand ?? (_CheckedCommand= new DelegateCommand<object>(OnChecked));
  73. private DelegateCommand _SelectedItemChangedCommand;
  74. public DelegateCommand SelectedItemChangedCommand =>
  75. _SelectedItemChangedCommand ?? (_SelectedItemChangedCommand = new DelegateCommand(OnSelectedItemChanged));
  76. private DelegateCommand<Object> _LoadedCommand;
  77. public DelegateCommand<Object> LoadedCommand =>
  78. _LoadedCommand ?? (_LoadedCommand = new DelegateCommand<Object>(OnLoaded));
  79. public RoleViewModel()
  80. {
  81. VenusMenus = SerializeHelper.Instance.ReadFromJsonFile<List<VenusMenu>>("Config/UIMenuList.json");
  82. VenusMenus.ForEach(x =>
  83. {
  84. x.MenuItem.ForEach(k =>
  85. {
  86. Menus.Add(new Menu(x.Name, k.Id));
  87. });
  88. });
  89. RoleDefines.Add(new RoleDefine("Manager", new ObservableCollection<Menu>(Menus)));
  90. RoleDefines.Add(new RoleDefine("Engineer", new ObservableCollection<Menu>(Menus)));
  91. RoleDefines.Add(new RoleDefine("Technician", new ObservableCollection<Menu>(Menus)));
  92. RoleDefines.Add(new RoleDefine("Operator", new ObservableCollection<Menu>(Menus)));
  93. Roles.Add("Manager");
  94. Roles.Add("Engineer");
  95. Roles.Add("Technician");
  96. Roles.Add("Operator");
  97. Menus = RoleDefines[0].Menus;
  98. vm = CollectionViewSource.GetDefaultView(Menus);
  99. vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu"));
  100. }
  101. private void OnSave()
  102. {
  103. //SerializeHelper.Instance.WriteToJsonFile<List<VenusMenu>>(VenusMenus, "Config/UIMenu.json");
  104. }
  105. private void OnChecked(object obj)
  106. {
  107. }
  108. private void OnSelectedItemChanged()
  109. {
  110. }
  111. private void OnLoaded(Object myrecipeView)
  112. {
  113. if (firstLoad == true)
  114. {
  115. roleView = myrecipeView as RoleView;
  116. roleView.roleTreeView.SelectedItemChanged += RoleTreeView_SelectedItemChanged;
  117. }
  118. }
  119. private void RoleTreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs<object> e)
  120. {
  121. int index = Roles.IndexOf(e.NewValue.ToString());
  122. Menus = RoleDefines[index].Menus;
  123. //vm = CollectionViewSource.GetDefaultView(Menus);
  124. //vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu"));
  125. }
  126. }
  127. }