using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Data; using Venus_Core; using Venus_Unity; using RoleDefine = Venus_MainPages.Roles.RoleDefine; using Menu = Venus_MainPages.Roles.Menu; using Venus_MainPages.Views; namespace Venus_MainPages.ViewModels { internal class RoleViewModel : BindableBase { #region 私有属性 List m_venusMenus = new List(); ObservableCollection m_Menus=new ObservableCollection(); ICollectionView vm; ObservableCollection m_Roles = new ObservableCollection(); ObservableCollection m_RoleDefines = new ObservableCollection(); private bool firstLoad = true; private RoleView roleView; #endregion #region 依赖项属性 public List VenusMenus { get { return m_venusMenus; } set { SetProperty(ref m_venusMenus, value); } } public ObservableCollection Menus { get { return m_Menus; } set { SetProperty(ref m_Menus, value); } } public ObservableCollection Roles { get { return m_Roles; } set { SetProperty(ref m_Roles, value); } } public ObservableCollection RoleDefines { get { return m_RoleDefines; } set { SetProperty(ref m_RoleDefines, value); } } #endregion private DelegateCommand _SaveCommand; public DelegateCommand SaveCommand => _SaveCommand ?? (_SaveCommand = new DelegateCommand(OnSave)); private DelegateCommand _CheckedCommand; public DelegateCommand CheckedCommand => _CheckedCommand ?? (_CheckedCommand= new DelegateCommand(OnChecked)); private DelegateCommand _SelectedItemChangedCommand; public DelegateCommand SelectedItemChangedCommand => _SelectedItemChangedCommand ?? (_SelectedItemChangedCommand = new DelegateCommand(OnSelectedItemChanged)); private DelegateCommand _LoadedCommand; public DelegateCommand LoadedCommand => _LoadedCommand ?? (_LoadedCommand = new DelegateCommand(OnLoaded)); public RoleViewModel() { VenusMenus = SerializeHelper.Instance.ReadFromJsonFile>("Config/UIMenuList.json"); VenusMenus.ForEach(x => { x.MenuItem.ForEach(k => { Menus.Add(new Menu(x.Name, k.Id)); }); }); RoleDefines.Add(new RoleDefine("Manager", new ObservableCollection(Menus))); RoleDefines.Add(new RoleDefine("Engineer", new ObservableCollection(Menus))); RoleDefines.Add(new RoleDefine("Technician", new ObservableCollection(Menus))); RoleDefines.Add(new RoleDefine("Operator", new ObservableCollection(Menus))); Roles.Add("Manager"); Roles.Add("Engineer"); Roles.Add("Technician"); Roles.Add("Operator"); Menus = RoleDefines[0].Menus; vm = CollectionViewSource.GetDefaultView(Menus); vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu")); } private void OnSave() { //SerializeHelper.Instance.WriteToJsonFile>(VenusMenus, "Config/UIMenu.json"); } private void OnChecked(object obj) { } private void OnSelectedItemChanged() { } private void OnLoaded(Object myrecipeView) { if (firstLoad == true) { roleView = myrecipeView as RoleView; roleView.roleTreeView.SelectedItemChanged += RoleTreeView_SelectedItemChanged; } } private void RoleTreeView_SelectedItemChanged(object sender, System.Windows.RoutedPropertyChangedEventArgs e) { int index = Roles.IndexOf(e.NewValue.ToString()); Menus = RoleDefines[index].Menus; //vm = CollectionViewSource.GetDefaultView(Menus); //vm.GroupDescriptions.Add(new PropertyGroupDescription("FirstMenu")); } } }