diff --git a/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs b/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs index b7402e0..33247c5 100644 --- a/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs +++ b/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs @@ -29,6 +29,12 @@ namespace SpineViewer.ViewModels.MainWindow public string Title => $"SpineViewer - v{App.Version}"; + /// + /// 指示是否通过托盘图标进行退出 + /// + public bool IsShuttingDownFromTray => _isShuttingDownFromTray; + private bool _isShuttingDownFromTray; + public bool? CloseToTray { get => _closeToTray; @@ -101,8 +107,13 @@ namespace SpineViewer.ViewModels.MainWindow }); private RelayCommand _cmd_SwitchWallpaperView; - public RelayCommand Cmd_Exit => _cmd_Exit ??= new(App.Current.Shutdown); - private RelayCommand? _cmd_Exit; + public RelayCommand Cmd_ExitFromTray => _cmd_ExitFromTray ??= new(() => + { + _isShuttingDownFromTray = true; + OnPropertyChanged(nameof(IsShuttingDownFromTray)); + App.Current.Shutdown(); + }); + private RelayCommand? _cmd_ExitFromTray; /// /// 打开工作区 diff --git a/SpineViewer/Views/MainWindow.xaml b/SpineViewer/Views/MainWindow.xaml index d33fa03..6fad453 100644 --- a/SpineViewer/Views/MainWindow.xaml +++ b/SpineViewer/Views/MainWindow.xaml @@ -942,7 +942,7 @@ - + diff --git a/SpineViewer/Views/MainWindow.xaml.cs b/SpineViewer/Views/MainWindow.xaml.cs index df637c5..c034245 100644 --- a/SpineViewer/Views/MainWindow.xaml.cs +++ b/SpineViewer/Views/MainWindow.xaml.cs @@ -226,6 +226,9 @@ public partial class MainWindow : Window private void MainWindow_Closing(object? sender, CancelEventArgs e) { + if (_vm.IsShuttingDownFromTray) + return; + if (_vm.CloseToTray is null) { _vm.PreferenceViewModel.CloseToTray = MessagePopupService.YesNo(AppResource.Str_CloseToTrayQuest);