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

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.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)