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);