完善画布焦点转移逻辑

This commit is contained in:
ww-rm
2025-09-19 00:56:25 +08:00
parent a24db3c447
commit 3d649e36cc
2 changed files with 7 additions and 7 deletions

View File

@@ -275,9 +275,12 @@ namespace SpineViewer.ViewModels.MainWindow
hit = true; hit = true;
// 不管点到了哪个, 清空原先选中的, 改为只选中这一次点的, 强制触发一次选中项改变, 以及焦点转移到模型列表 // 如果点到了没被选中的东西, 清空原先选中的, 改为只选中这一次点的
if (!sp.IsSelected)
{
RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Reset)); RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Reset));
RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Add, sp)); RequestSelectionChanging?.Invoke(this, new(NotifyCollectionChangedAction.Add, sp));
}
break; break;
} }

View File

@@ -56,7 +56,7 @@ public partial class MainWindow : Window
{ {
var vm = _vm.SFMLRendererViewModel; var vm = _vm.SFMLRendererViewModel;
_renderPanel.CanvasMouseWheelScrolled += vm.CanvasMouseWheelScrolled; _renderPanel.CanvasMouseWheelScrolled += vm.CanvasMouseWheelScrolled;
_renderPanel.CanvasMouseButtonPressed += vm.CanvasMouseButtonPressed; _renderPanel.CanvasMouseButtonPressed += (s, e) => { vm.CanvasMouseButtonPressed(s, e); _spinesListView.Focus(); }; // 用户点击画布后强制转移焦点至列表
_renderPanel.CanvasMouseMove += vm.CanvasMouseMove; _renderPanel.CanvasMouseMove += vm.CanvasMouseMove;
_renderPanel.CanvasMouseButtonReleased += vm.CanvasMouseButtonReleased; _renderPanel.CanvasMouseButtonReleased += vm.CanvasMouseButtonReleased;
@@ -193,9 +193,6 @@ public partial class MainWindow : Window
default: default:
break; break;
} }
// 选中项发生变化时转移焦点到列表
_spinesListView.Focus();
} }
private void SpinesListView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) private void SpinesListView_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)