From 0d6a4bd22fb5878088789b70e0324314fc0187da Mon Sep 17 00:00:00 2001 From: "zhengxuan.zhang" Date: Tue, 28 Apr 2026 10:56:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E5=9B=BE=EF=BC=8C=E5=8D=95?= =?UTF-8?q?=E5=87=BB=E5=88=87=E6=8D=A2=EF=BC=8C=E5=8F=8C=E5=87=BB=E7=A6=81?= =?UTF-8?q?=E7=94=A8=E6=88=96=E6=BF=80=E6=B4=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PipelineEditorView.xaml.cs | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs b/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs index 13867a4..5140a8d 100644 --- a/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs +++ b/XplorePlane/Views/ImageProcessing/PipelineEditorView.xaml.cs @@ -59,6 +59,8 @@ namespace XplorePlane.Views PipelineListBox.PreviewMouseMove += OnPreviewMouseMove; PipelineListBox.PreviewMouseLeftButtonUp -= OnPreviewMouseLeftButtonUp; PipelineListBox.PreviewMouseLeftButtonUp += OnPreviewMouseLeftButtonUp; + PipelineListBox.MouseDoubleClick -= OnMouseDoubleClick; + PipelineListBox.MouseDoubleClick += OnMouseDoubleClick; PipelineListBox.PreviewKeyDown -= OnPreviewKeyDown; PipelineListBox.PreviewKeyDown += OnPreviewKeyDown; } @@ -103,7 +105,6 @@ namespace XplorePlane.Views private void OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { - var vm = DataContext as IPipelineEditorHostViewModel; var clickedNode = FindNodeFromOriginalSource(e.OriginalSource); if (_isInternalDragging) @@ -119,19 +120,32 @@ namespace XplorePlane.Views return; } - if (vm == null || clickedNode == null || IsInteractiveChild(e.OriginalSource)) + if (clickedNode == null || IsInteractiveChild(e.OriginalSource)) { ResetDragState(); return; } + // 单击只选中,不切换启用状态 PipelineListBox.SelectedItem = clickedNode; PipelineListBox.Focus(); - vm.ToggleOperatorEnabledCommand.Execute(clickedNode); e.Handled = true; ResetDragState(); } + private void OnMouseDoubleClick(object sender, MouseButtonEventArgs e) + { + var vm = DataContext as IPipelineEditorHostViewModel; + var clickedNode = FindNodeFromOriginalSource(e.OriginalSource); + + if (vm == null || clickedNode == null || IsInteractiveChild(e.OriginalSource)) + return; + + // 双击切换启用/禁用 + vm.ToggleOperatorEnabledCommand.Execute(clickedNode); + e.Handled = true; + } + private void OnPreviewKeyDown(object sender, KeyEventArgs e) { if (e.Key != Key.Delete || DataContext is not IPipelineEditorHostViewModel vm || vm.SelectedNode == null)