diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs index 32c792c..30cdb60 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs @@ -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(designer.Vertices.Select(p => new ConnectorVertexModel(this.Root, this, designer))); - Labels = new ObservableCollection(designer.Labels.Select(p => new ConnectorLabelModel(this.Root, this, designer))); + Vertices = new ObservableCollection(designer.Vertices.Select(p => { + ConnectorVertexModel temp = new ConnectorVertexModel(this.Root, this, designer) { ConnectorVertexType = p.ConnectorVertexType }; + return temp; + })); + Labels = new ObservableCollection(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);