Files
DMS/DMS.WPF/ViewModels/MainViewModel.cs

85 lines
2.5 KiB
C#
Raw Normal View History

using System.Collections.ObjectModel;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
2025-07-26 10:05:43 +08:00
using DMS.Core.Enums;
using DMS.Core.Models;
using DMS.WPF.Helper;
2025-09-03 18:22:01 +08:00
using DMS.WPF.Interfaces;
using DMS.WPF.Services;
2025-07-26 18:58:52 +08:00
using DMS.WPF.ViewModels.Items;
using DMS.WPF.Views;
using Microsoft.Extensions.Logging;
// AddAsync this using directive
// AddAsync this using directive
2025-05-29 08:58:58 +08:00
2025-07-19 11:11:01 +08:00
namespace DMS.WPF.ViewModels;
2025-06-10 20:55:39 +08:00
2025-07-03 15:03:36 +08:00
/// <summary>
/// 主视图模型,负责应用程序的主导航和数据管理。
/// </summary>
public partial class MainViewModel : ViewModelBase
{
private readonly IDialogService _dialogService;
private readonly IWPFDataService _wpfDataService;
private readonly IDataStorageService _dataStorageService;
2025-07-26 18:58:52 +08:00
private readonly INavigationService _navigationService;
private readonly ILogger<MainViewModel> _logger;
2025-07-03 15:03:36 +08:00
/// <summary>
/// 当前显示的视图模型。
/// </summary>
[ObservableProperty]
2025-07-26 18:58:52 +08:00
private ViewModelBase _currentViewModel;
2025-07-03 15:03:36 +08:00
/// <summary>
/// 应用程序的菜单列表。
/// </summary>
[ObservableProperty]
private ObservableCollection<MenuItemViewModel> _menuTrees;
2025-07-03 15:03:36 +08:00
/// <summary>
/// 初始化 <see cref="MainViewModel"/> 类的新实例。
/// </summary>
/// <param name="navgatorServices">导航服务。</param>
/// <param name="dataServices">数据服务。</param>
/// <param name="dialogService">对话框服务。</param>
/// <param name="logger">日志记录器。</param>
/// <param name="wpfDataService"></param>
public MainViewModel(IWPFDataService wpfDataService ,IDataStorageService dataStorageService,INavigationService navigationService,
2025-07-26 10:05:43 +08:00
ILogger<MainViewModel> logger)
{
_wpfDataService = wpfDataService;
_dataStorageService = dataStorageService;
2025-07-26 18:58:52 +08:00
_navigationService = navigationService;
_logger = logger;
MenuTrees = _dataStorageService.MenuTrees;
CurrentViewModel = new HomeViewModel();
CurrentViewModel.OnLoaded();
}
/// <summary>
/// 显示主窗口的命令。
/// </summary>
[RelayCommand]
private void ShowWindow()
{
2025-08-24 18:29:26 +08:00
if (App.Current.MainWindow is MainView mainWindow)
{
mainWindow.ShowApplication();
}
}
/// <summary>
/// 退出应用程序的命令。
/// </summary>
[RelayCommand]
private void ExitApplication()
{
2025-07-26 10:05:43 +08:00
// Application.Current.Shutdown();
}
2025-07-03 15:03:36 +08:00
}