using System.Collections.ObjectModel; using System.Windows.Input; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using DMS.Application.DTOs; using DMS.Core.Enums; using DMS.WPF.Services; namespace DMS.WPF.ItemViewModel; /// /// 菜单项视图模型 /// 用于在WPF界面中绑定和显示菜单项数据,实现MVVM模式 /// 继承自ObservableObject以支持属性更改通知 /// public partial class MenuItem : ObservableObject { /// /// 菜单项的唯一标识符 /// public int Id { get; set; } /// /// 父级菜单项的ID,用于构建层级菜单结构 /// 如果为null表示为顶级菜单项 /// [ObservableProperty] private int? _parentId; /// /// 菜单项显示的标题文本 /// [ObservableProperty] private string _header; /// /// 菜单项显示的图标资源路径或标识符 /// [ObservableProperty] private string _icon; /// /// 菜单的类型,例如菜单关联的是设备,还是变量表,或者是MQTT /// 用于区分不同类型的菜单项,决定点击菜单项时的行为 /// [ObservableProperty] private MenuType _menuType; /// /// 菜单关联的数据ID,例如设备Id,变量表Id /// 根据MenuType的不同,此ID可以指向不同的数据实体 /// [ObservableProperty] private int _targetId; /// /// 目标视图的键值,用于导航到特定的视图页面 /// [ObservableProperty] private string _targetViewKey; /// /// 导航参数,传递给目标视图的额外参数信息 /// [ObservableProperty] private string _navigationParameter; /// /// 菜单项在同级菜单中的显示顺序 /// 数值越小显示越靠前 /// [ObservableProperty] private int _displayOrder; /// /// 子菜单项集合,用于构建层级菜单结构 /// 使用ObservableCollection以支持动态添加和删除子项并自动更新UI /// [ObservableProperty] private ObservableCollection _children = new(); }