From 3d649e36cc1211616c67720bc264b1e1ad347196 Mon Sep 17 00:00:00 2001 From: ww-rm Date: Fri, 19 Sep 2025 00:56:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E7=94=BB=E5=B8=83=E7=84=A6?= =?UTF-8?q?=E7=82=B9=E8=BD=AC=E7=A7=BB=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModels/MainWindow/SFMLRendererViewModel.cs | 9 ++++++--- SpineViewer/Views/MainWindow.xaml.cs | 5 +---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs b/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs index 67d9268..348c80e 100644 --- a/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs +++ b/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs @@ -275,9 +275,12 @@ namespace SpineViewer.ViewModels.MainWindow hit = true; - // 不管点到了哪个, 都清空原先选中的, 改为只选中这一次点的, 强制触发一次选中项改变, 以及焦点转移到模型列表 - RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Reset)); - RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Add, sp)); + // 如果点到了没被选中的东西, 则清空原先选中的, 改为只选中这一次点的 + if (!sp.IsSelected) + { + RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Reset)); + RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Add, sp)); + } break; } diff --git a/SpineViewer/Views/MainWindow.xaml.cs b/SpineViewer/Views/MainWindow.xaml.cs index 60cefe5..8379888 100644 --- a/SpineViewer/Views/MainWindow.xaml.cs +++ b/SpineViewer/Views/MainWindow.xaml.cs @@ -56,7 +56,7 @@ public partial class MainWindow : Window { var vm = _vm.SFMLRendererViewModel; _renderPanel.CanvasMouseWheelScrolled += vm.CanvasMouseWheelScrolled; - _renderPanel.CanvasMouseButtonPressed += vm.CanvasMouseButtonPressed; + _renderPanel.CanvasMouseButtonPressed += (s, e) => { vm.CanvasMouseButtonPressed(s, e); _spinesListView.Focus(); }; // 用户点击画布后强制转移焦点至列表 _renderPanel.CanvasMouseMove += vm.CanvasMouseMove; _renderPanel.CanvasMouseButtonReleased += vm.CanvasMouseButtonReleased; @@ -193,9 +193,6 @@ public partial class MainWindow : Window default: break; } - - // 选中项发生变化时转移焦点到列表 - _spinesListView.Focus(); } private void SpinesListView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)