流程图,单击切换,双击禁用或激活

This commit is contained in:
zhengxuan.zhang
2026-04-28 10:56:31 +08:00
parent 2969ada965
commit 0d6a4bd22f
@@ -59,6 +59,8 @@ namespace XplorePlane.Views
PipelineListBox.PreviewMouseMove += OnPreviewMouseMove; PipelineListBox.PreviewMouseMove += OnPreviewMouseMove;
PipelineListBox.PreviewMouseLeftButtonUp -= OnPreviewMouseLeftButtonUp; PipelineListBox.PreviewMouseLeftButtonUp -= OnPreviewMouseLeftButtonUp;
PipelineListBox.PreviewMouseLeftButtonUp += OnPreviewMouseLeftButtonUp; PipelineListBox.PreviewMouseLeftButtonUp += OnPreviewMouseLeftButtonUp;
PipelineListBox.MouseDoubleClick -= OnMouseDoubleClick;
PipelineListBox.MouseDoubleClick += OnMouseDoubleClick;
PipelineListBox.PreviewKeyDown -= OnPreviewKeyDown; PipelineListBox.PreviewKeyDown -= OnPreviewKeyDown;
PipelineListBox.PreviewKeyDown += OnPreviewKeyDown; PipelineListBox.PreviewKeyDown += OnPreviewKeyDown;
} }
@@ -103,7 +105,6 @@ namespace XplorePlane.Views
private void OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) private void OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{ {
var vm = DataContext as IPipelineEditorHostViewModel;
var clickedNode = FindNodeFromOriginalSource(e.OriginalSource); var clickedNode = FindNodeFromOriginalSource(e.OriginalSource);
if (_isInternalDragging) if (_isInternalDragging)
@@ -119,19 +120,32 @@ namespace XplorePlane.Views
return; return;
} }
if (vm == null || clickedNode == null || IsInteractiveChild(e.OriginalSource)) if (clickedNode == null || IsInteractiveChild(e.OriginalSource))
{ {
ResetDragState(); ResetDragState();
return; return;
} }
// 单击只选中,不切换启用状态
PipelineListBox.SelectedItem = clickedNode; PipelineListBox.SelectedItem = clickedNode;
PipelineListBox.Focus(); PipelineListBox.Focus();
vm.ToggleOperatorEnabledCommand.Execute(clickedNode);
e.Handled = true; e.Handled = true;
ResetDragState(); 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) private void OnPreviewKeyDown(object sender, KeyEventArgs e)
{ {
if (e.Key != Key.Delete || DataContext is not IPipelineEditorHostViewModel vm || vm.SelectedNode == null) if (e.Key != Key.Delete || DataContext is not IPipelineEditorHostViewModel vm || vm.SelectedNode == null)