可以自定义连接点

This commit is contained in:
艾竹
2023-01-29 22:54:06 +08:00
parent ba9e3bdf58
commit 5ee0c1ce26
15 changed files with 548 additions and 125 deletions

View File

@@ -280,7 +280,8 @@ namespace AIStudio.Wpf.DiagramDesigner
{
sourceConnector = value;
connectorsHit.Add(sourceConnector);
FullyCreatedConnectorInfo sourceDataItem = sourceConnector.DataContext as FullyCreatedConnectorInfo;
FullyCreatedConnectorInfo sourceDataItem = sourceConnector.Info;
Rect rectangleBounds = sourceConnector.TransformToVisual(this).TransformBounds(new Rect(sourceConnector.RenderSize));
@@ -348,10 +349,9 @@ namespace AIStudio.Wpf.DiagramDesigner
// drag operation we cache the start point
rubberbandSelectionStartPoint = e.GetPosition(this);
IDiagramViewModel vm = (this.DataContext as IDiagramViewModel);
if (!(Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)))
{
vm.ClearSelectedItemsCommand.Execute(null);
_viewModel.ClearSelectedItemsCommand.Execute(null);
}
e.Handled = true;
@@ -451,11 +451,11 @@ namespace AIStudio.Wpf.DiagramDesigner
if (sourceConnector != null)
{
FullyCreatedConnectorInfo sourceDataItem = sourceConnectorInfo ?? (sourceConnector.DataContext as FullyCreatedConnectorInfo);
FullyCreatedConnectorInfo sourceDataItem = sourceConnectorInfo ?? (sourceConnector.Info);
if (connectorsHit.Count() == 2)
{
Connector sinkConnector = connectorsHit.Last();
FullyCreatedConnectorInfo sinkDataItem = sinkConnector.DataContext as FullyCreatedConnectorInfo;
FullyCreatedConnectorInfo sinkDataItem = sinkConnector.Info;
int indexOfLastTempConnection = sinkDataItem.DataItem.Root.Items.Count - 1;
sinkDataItem.DataItem.Root.DirectRemoveItemCommand.Execute(
@@ -562,7 +562,7 @@ namespace AIStudio.Wpf.DiagramDesigner
DragObject dragObject = e.Data.GetData(typeof(DragObject)) as DragObject;
if (dragObject != null)
{
(DataContext as IDiagramViewModel).ClearSelectedItemsCommand.Execute(null);
_viewModel.ClearSelectedItemsCommand.Execute(null);
Point position = e.GetPosition(this);
DesignerItemViewModelBase itemBase = null;
if (dragObject.DesignerItem != null)
@@ -589,7 +589,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
foreach (var file in files)
{
(DataContext as IDiagramViewModel).ClearSelectedItemsCommand.Execute(null);
_viewModel.ClearSelectedItemsCommand.Execute(null);
Point position = e.GetPosition(this);
ImageItemViewModel itemBase = new ImageItemViewModel();
itemBase.Icon = file;
@@ -599,7 +599,7 @@ namespace AIStudio.Wpf.DiagramDesigner
itemBase.Left = Math.Max(0, position.X - itemBase.ItemWidth / 2);
itemBase.Top = Math.Max(0, position.Y - itemBase.ItemHeight / 2);
(DataContext as IDiagramViewModel).AddItemCommand.Execute(itemBase);
_viewModel.AddItemCommand.Execute(itemBase);
}
}
e.Handled = true;