From 699a055707e85d2c84093047432c8c258ce1f72e Mon Sep 17 00:00:00 2001 From: ww-rm Date: Wed, 17 Sep 2025 23:34:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=89=E4=B8=AD=E9=A1=B9=E5=8F=91=E7=94=9F?= =?UTF-8?q?=E5=8F=98=E5=8C=96=E6=97=B6=E8=BD=AC=E7=A7=BB=E7=84=A6=E7=82=B9?= =?UTF-8?q?=E8=87=B3=E6=A8=A1=E5=9E=8B=E5=88=97=E8=A1=A8?= 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 | 3 +++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs b/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs index 348c80e..67d9268 100644 --- a/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs +++ b/SpineViewer/ViewModels/MainWindow/SFMLRendererViewModel.cs @@ -275,12 +275,9 @@ namespace SpineViewer.ViewModels.MainWindow hit = true; - // 如果点到了没被选中的东西, 则清空原先选中的, 改为只选中这一次点的 - if (!sp.IsSelected) - { - RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Reset)); - RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Add, sp)); - } + // 不管点到了哪个, 都清空原先选中的, 改为只选中这一次点的, 强制触发一次选中项改变, 以及焦点转移到模型列表 + 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 f775e7b..60cefe5 100644 --- a/SpineViewer/Views/MainWindow.xaml.cs +++ b/SpineViewer/Views/MainWindow.xaml.cs @@ -193,6 +193,9 @@ public partial class MainWindow : Window default: break; } + + // 选中项发生变化时转移焦点到列表 + _spinesListView.Focus(); } private void SpinesListView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)