using System; using System.Collections.Generic; using System.ComponentModel; namespace MECF.Framework.Common.Account.Extends { /// /// /// [Serializable] public class AppMenu : INotifyPropertyChanged { #region Variables private string _mStrMenuId; private string _mStrViewModel; private string _mStrResKey; private string _system; private int _permission; private AppMenu _parent; private List _menuItems; private bool _selected; private bool _isAlarm; private string _alarmModule; #endregion public string MenuID { get => _mStrMenuId; set => _mStrMenuId = value; } public string ResKey { get => _mStrResKey; set => _mStrResKey = value; } public List MenuItems { get => _menuItems; set => _menuItems = value; } public string ViewModel { get => _mStrViewModel; set => _mStrViewModel = value; } public int Permission { get => _permission; set => _permission = value; } public string System { get => _system; set => _system = value; } public AppMenu Parent { get => _parent; set => _parent = value; } public bool Selected { get => _selected; set { _selected = value; OnPropertyChanged("Selected"); } } public bool IsAlarm { get => _isAlarm; set { _isAlarm = value; OnPropertyChanged("IsAlarm"); } } public string AlarmModule { get => _alarmModule; set => _alarmModule = value; } public object Model { get; set; } public AppMenu LastSelectedSubMenu { get; set; } public event PropertyChangedEventHandler PropertyChanged; public AppMenu() { } public AppMenu(string p_strMenuID, string p_strMenuViewModel, string p_strResKey, List p_menuItems) { _mStrMenuId = p_strMenuID; _mStrViewModel = p_strMenuViewModel; _mStrResKey = p_strResKey; _menuItems = p_menuItems; } public object Clone(AppMenu parent) { AppMenu appMenu = new AppMenu(); appMenu.MenuID = MenuID; appMenu.ResKey = ResKey; appMenu.ViewModel = ViewModel; appMenu.Permission = Permission; appMenu.Selected = Selected; appMenu.System = System; appMenu.Parent = parent; appMenu.IsAlarm = IsAlarm; appMenu.AlarmModule = AlarmModule; if (MenuItems != null) { appMenu.MenuItems = new List(); foreach (AppMenu menuItem in MenuItems) { appMenu.MenuItems.Add((AppMenu)menuItem.Clone(appMenu)); } } return appMenu; } protected virtual void OnPropertyChanged(string propertyName) { this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } }