mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 08:10:50 +08:00
修复保存项目再开时连线重复添加了 start、end点
This commit is contained in:
@@ -2,13 +2,10 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using AIStudio.Wpf.DiagramDesigner.Controls;
|
||||
using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
||||
using AIStudio.Wpf.DiagramDesigner.Helpers;
|
||||
using SvgPathProperties;
|
||||
@@ -31,7 +28,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
|
||||
public ConnectionViewModel(IDiagramViewModel root, ConnectorInfoBase sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : base(root)
|
||||
{
|
||||
{
|
||||
_pathMode = drawMode.ToString();
|
||||
_routerMode = routerMode.ToString();
|
||||
Init(root, sourceConnectorInfo, sinkConnectorInfo);
|
||||
@@ -65,16 +62,16 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false)
|
||||
{
|
||||
this.ShapeViewModel.SinkMarker = new SharpPath("", 10, 10, PathStyle.None, SizeStyle.Middle);
|
||||
}
|
||||
}
|
||||
var routetype = TypeHelper.GetType(RouterMode);
|
||||
Router = routetype != null ? (System.Activator.CreateInstance(routetype) as IRouter) : new RouterNormal();
|
||||
var pathGeneratortype = TypeHelper.GetType(PathMode);
|
||||
PathGenerator = pathGeneratortype != null ? (System.Activator.CreateInstance(pathGeneratortype) as IPathGenerator) : new ConnectingLineSmooth();
|
||||
IsLoaded= true;
|
||||
IsLoaded = true;
|
||||
|
||||
this.SourceConnectorInfo = sourceConnectorInfo;
|
||||
this.SinkConnectorInfo = sinkConnectorInfo;
|
||||
|
||||
|
||||
|
||||
DeleteConnectionCommand = new SimpleCommand(Command_Enable, DeleteConnection);
|
||||
AddVertexCommand = new SimpleCommand(Command_Enable, AddVertex);
|
||||
@@ -87,8 +84,18 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
if (designerbase is ConnectionItem designer)
|
||||
{
|
||||
Vertices = new ObservableCollection<ConnectorVertexModel>(designer.Vertices.Select(p => new ConnectorVertexModel(this.Root, this, designer)));
|
||||
Labels = new ObservableCollection<ConnectorLabelModel>(designer.Labels.Select(p => new ConnectorLabelModel(this.Root, this, designer)));
|
||||
Vertices = new ObservableCollection<ConnectorVertexModel>(designer.Vertices.Select(p => {
|
||||
ConnectorVertexModel temp = new ConnectorVertexModel(this.Root, this, designer) { ConnectorVertexType = p.ConnectorVertexType };
|
||||
return temp;
|
||||
}));
|
||||
Labels = new ObservableCollection<ConnectorLabelModel>(designer.Labels.Select(p => {
|
||||
ConnectorLabelModel temp = new ConnectorLabelModel(this.Root, this, designer)
|
||||
{
|
||||
Distance = p.Distance,
|
||||
Offset = p.Offset
|
||||
};
|
||||
return temp;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,7 +482,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
protected override void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsLoaded == false || IsInternalChanged == true ) return;
|
||||
if (IsLoaded == false || IsInternalChanged == true) return;
|
||||
|
||||
if (sender is ConnectionViewModel)
|
||||
{
|
||||
@@ -577,7 +584,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
UpdatePathGeneratorResult();
|
||||
}
|
||||
else if(connectorVertexModel.ConnectorVertexType == ConnectorVertexType.Start)
|
||||
else if (connectorVertexModel.ConnectorVertexType == ConnectorVertexType.Start)
|
||||
{
|
||||
var nearPort = Root.FindNearPortToAttachTo(this, ConnectorVertexType.Start);
|
||||
SetSourcePort(new PartCreatedConnectorInfo(connectorVertexModel.Position.X, connectorVertexModel.Position.Y));
|
||||
@@ -683,12 +690,12 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
StartAngle = PathGeneratorResult.SourceMarkerAngle;
|
||||
EndAngle = PathGeneratorResult.TargetMarkerAngle;
|
||||
|
||||
StartPoint = new PointBase(source.Value.X - Area.Left , source.Value.Y - Area.Top );
|
||||
EndPoint = new PointBase(target.Value.X - Area.Left , target.Value.Y - Area.Top);
|
||||
StartPoint = new PointBase(source.Value.X - Area.Left, source.Value.Y - Area.Top);
|
||||
EndPoint = new PointBase(target.Value.X - Area.Left, target.Value.Y - Area.Top);
|
||||
|
||||
var startVertice = Vertices.FirstOrDefault(p => p.ConnectorVertexType == ConnectorVertexType.Start);
|
||||
if (startVertice == null)
|
||||
{
|
||||
{
|
||||
startVertice = AddEndsVertex(StartPoint, ConnectorVertexType.Start);
|
||||
}
|
||||
else
|
||||
@@ -697,7 +704,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
startVertice.SetPosition(StartPoint);
|
||||
IsInternalChanged = true;
|
||||
}
|
||||
startVertice.ColorViewModel.FillColor.Color = SourceConnectorInfoFully != null? Colors.DarkRed : Colors.Blue;
|
||||
startVertice.ColorViewModel.FillColor.Color = SourceConnectorInfoFully != null ? Colors.DarkRed : Colors.Blue;
|
||||
startVertice.ColorViewModel.LineColor.Color = SourceConnectorInfoFully != null ? Colors.DarkRed : Colors.Blue;
|
||||
|
||||
var endVertice = Vertices.FirstOrDefault(p => p.ConnectorVertexType == ConnectorVertexType.End);
|
||||
@@ -957,7 +964,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
public ConnectorVertexModel AddEndsVertex(PointBase pointBase, ConnectorVertexType connectorVertexType)
|
||||
{
|
||||
var vertice = new ConnectorVertexModel(this, pointBase);
|
||||
vertice.ConnectorVertexType= connectorVertexType;
|
||||
vertice.ConnectorVertexType = connectorVertexType;
|
||||
vertice.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
|
||||
Vertices.Add(vertice);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user