using BaseFrame.Views; using MaterialDesignThemes.Wpf; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace BaseFrame.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; } #endregion private IEventAggregator _eventAggregator; private IRegionManager _regionManager; public ShellViewModel( IContainerProvider containerProvider) { _eventAggregator = containerProvider.Resolve(); _regionManager = containerProvider.Resolve(); LeftDrawerOpenCommand = new DelegateCommand(LeftDrawerOpen); MinimizeCommand = new DelegateCommand(MinimizeWindow); MaximizeCommand = new DelegateCommand(MaximizeWindow); CloseCommand = new DelegateCommand(CloseWindow); NavigateCommand = new DelegateCommand(Navigate); } #region 命令处理 private void Navigate(string content) { switch (content) { case "监控界面": _regionManager.RequestNavigate("ShellViewManager", "MonitorView"); 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 } }