using LOT.Views; using MaterialDesignThemes.Wpf; using Notifications.Wpf.Core; using Prism.Events; using Prism.Ioc; using Prism.Modularity; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; using UIShare.PubEvent; namespace LOT.ViewModels { public class ShellViewModel : BindableBase { #region 属性 private bool _IsLeftDrawerOpen; public bool IsLeftDrawerOpen { get => _IsLeftDrawerOpen; set => SetProperty(ref _IsLeftDrawerOpen, value); } #endregion #region 命令 public ICommand LeftDrawerOpenCommand { get; set; } public ICommand MinimizeCommand { get; set; } public ICommand MaximizeCommand { get; set; } public ICommand CloseCommand { get; set; } public ICommand NavigateCommand { get; set; } public ICommand LoadCommand { get; set; } #endregion private IEventAggregator _eventAggregator; private IRegionManager _regionManager; private IContainerProvider _containerProvider; private INotificationManager _notificationManager; private IModuleManager _moduleManager; public ShellViewModel( IContainerProvider containerProvider) { _containerProvider= containerProvider; _eventAggregator = containerProvider.Resolve(); _regionManager = containerProvider.Resolve(); _notificationManager = containerProvider.Resolve(); _moduleManager = containerProvider.Resolve(); LeftDrawerOpenCommand = new DelegateCommand(LeftDrawerOpen); MinimizeCommand = new DelegateCommand(MinimizeWindow); MaximizeCommand = new DelegateCommand(MaximizeWindow); CloseCommand = new DelegateCommand(CloseWindow); NavigateCommand = new DelegateCommand(Navigate); LoadCommand = new DelegateCommand(Load); //订阅登录成功事件 _eventAggregator.GetEvent().Subscribe(() => { Application.Current.MainWindow.Show(); _regionManager.RequestNavigate("ShellViewManager", "MainView"); }); } #region 命令处理 private void Load() { _notificationManager.ShowAsync(new NotificationContent { Title = "登录成功", Message = "", Type = NotificationType.Success }); //默认导航到主界面 Type moduleAType = typeof(MainModule.MainModule); _moduleManager.LoadModule(moduleAType.Name); } private void Navigate(string content) { switch (content) { case "主界面": _regionManager.RequestNavigate("ShellViewManager", "MainView"); break; case "设置界面": _regionManager.RequestNavigate("ShellViewManager", "SettingView"); break; case "更新界面": _regionManager.RequestNavigate("ShellViewManager", "UpdateInfoView"); break; default: break; } } private void LeftDrawerOpen() { IsLeftDrawerOpen = true; } private void MinimizeWindow(Window window) { if (window != null) window.WindowState = WindowState.Minimized; } private void MaximizeWindow(Window window) { if (window != null) { window.WindowState = window.WindowState == WindowState.Maximized ? WindowState.Normal : WindowState.Maximized; } } private void CloseWindow(Window window) { window?.Close(); } #endregion } }