You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
3.3 KiB
C#

using Prism.Commands;
using Prism.Events;
using Prism.Ioc;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using StartServerWPF.Modules.Main.Models;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace StartServerWPF.Modules.Main.ViewModels
{
public class TreeMenuViewModel : BindableBase
{
private ObservableCollection<MenuItemModel> _menus;
public ObservableCollection<MenuItemModel> Menus { get => _menus; set => SetProperty(ref _menus, value); }
// private List<MenuInfoDTO> origMenus = null;
private IRegionManager _regionManager = null;
private readonly IDialogService _dialogService;
public TreeMenuViewModel(IContainerProvider containerProvider, IRegionManager regionManager, IEventAggregator ea, IDialogService dialogService)
{
_regionManager = regionManager;
this._dialogService = dialogService;
//var global = containerProvider.Resolve<GlobalEntity>();// 注册一个单例
// ea.GetEvent<LoginEvent>().Subscribe(OnLogin, ThreadOption.UIThread);
Menus=new ObservableCollection<MenuItemModel>();
FillMenus(Menus);
}
#region 事件
public DelegateCommand AboutCommand => new(()=>
{
DialogParameters param=new DialogParameters();
_dialogService.ShowDialog(
"AboutDialogView",
param,
new Action<IDialogResult>(result =>
{
if (result != null && result.Result == ButtonResult.OK)
{
MessageBox.Show("数据已保存", "提示");
}
}));
});
#endregion
//private void OnLogin(LoginPayload loginPayload)
//{
// Menus = new ObservableCollection<MenuItemModel>();
// if (!loginPayload.IsLogingIn) //
// {
// //登录完成更新措菜单
// if (GlobalEntity.CurrentUserInfo != null)
// {
// origMenus = GlobalEntity.CurrentUserInfo.Menus;
// this.FillMenus(Menus, 0);
// }
// }
//}
///递归
/// <summary>
/// 递归
/// </summary>
/// <param name="menus"></param>
private void FillMenus(ObservableCollection<MenuItemModel> menus)
{
for (int i = 0; i < menuNames.Count; i++)
{
MenuItemModel menuItem = new MenuItemModel(_regionManager)
{
MenuHeader = menuNames[i],
MenuIcon = "\ue63a",
TargetView = viewName[i],
Children = new ObservableCollection<MenuItemModel>(),
IsExpanded = true,
};
menus.Add(menuItem);
}
}
List<string> menuNames = new List<string>() {"首页","实时波形","波形回放","设置","日志","文件监控" };
List<string> viewName = new List<string>() { "MainView", "RealTimeWaveformView", "WaveformPlayBackView", "SetParamView", "LogManagementView","FilesWatcherView" };
}
}