114 lines
3.7 KiB
C#
114 lines
3.7 KiB
C#
using LAEPS.PubEvent;
|
|
using LAEPS.Views;
|
|
using MaterialDesignThemes.Wpf;
|
|
using Notifications.Wpf.Core;
|
|
using Prism.Events;
|
|
using Prism.Ioc;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using System.Windows.Input;
|
|
|
|
namespace LAEPS.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;
|
|
public ShellViewModel( IContainerProvider containerProvider)
|
|
{
|
|
_containerProvider= containerProvider;
|
|
_eventAggregator = containerProvider.Resolve<IEventAggregator>();
|
|
_regionManager = containerProvider.Resolve<IRegionManager>();
|
|
_notificationManager = containerProvider.Resolve<INotificationManager>();
|
|
LeftDrawerOpenCommand = new DelegateCommand(LeftDrawerOpen);
|
|
MinimizeCommand = new DelegateCommand<Window>(MinimizeWindow);
|
|
MaximizeCommand = new DelegateCommand<Window>(MaximizeWindow);
|
|
CloseCommand = new DelegateCommand<Window>(CloseWindow);
|
|
NavigateCommand = new DelegateCommand<string>(Navigate);
|
|
LoadCommand = new DelegateCommand(Load);
|
|
//订阅登录成功事件
|
|
_eventAggregator.GetEvent<LoginSuccessEvent>().Subscribe(() =>
|
|
{
|
|
Application.Current.MainWindow.Show();
|
|
_regionManager.RequestNavigate("ShellViewManager", "MainView");
|
|
});
|
|
}
|
|
|
|
#region 命令处理
|
|
private void Load()
|
|
{
|
|
_notificationManager.ShowAsync(new NotificationContent { Title = "登录成功", Message = "", Type = NotificationType.Success });
|
|
}
|
|
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
|
|
}
|
|
}
|