| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using LocalhostMES.DataBase;
- using LocalhostMES.ViewModels.Services;
- using Prism.Commands;
- using Prism.Mvvm;
- using System.ComponentModel;
- namespace LocalhostMES.ViewModels
- {
- /// <summary>
- /// 主窗口壳:初始化/释放共享会话与 Web API 宿主。
- /// </summary>
- public class MainViewModel : BindableBase
- {
- private readonly IMesWorkspace _workspace;
- public MainViewModel(IMesWorkspace workspace)
- {
- _workspace = workspace;
- LoadedCommand = new DelegateCommand(OnLoaded);
- ClosedCommand = new DelegateCommand(OnClosed);
- if (_workspace is INotifyPropertyChanged npc)
- {
- npc.PropertyChanged += OnWorkspacePropertyChanged;
- }
- }
- public DelegateCommand LoadedCommand { get; }
- public DelegateCommand ClosedCommand { get; }
- public int SelectedTabIndex
- {
- get => _workspace.SelectedTabIndex;
- set
- {
- if (_workspace.SelectedTabIndex == value)
- {
- return;
- }
- _workspace.SelectedTabIndex = value;
- RaisePropertyChanged();
- }
- }
- private void OnLoaded()
- {
- _workspace.Initialize();
- }
- private async void OnClosed()
- {
- _workspace.Shutdown();
- try
- {
- var svc = _workspace.MesManagement.WebApiService;
- if (svc?.IsRunning == true)
- {
- await svc.StopAsync();
- }
- }
- catch
- {
- // 忽略关闭时异常
- }
- }
- private void OnWorkspacePropertyChanged(object sender, PropertyChangedEventArgs e)
- {
- if (e.PropertyName == nameof(IMesWorkspace.SelectedTabIndex))
- {
- RaisePropertyChanged(nameof(SelectedTabIndex));
- }
- }
- }
- }
|