diff --git a/AIStudio.Wpf.DiagramApp/Themes/Generic.xaml b/AIStudio.Wpf.DiagramApp/Themes/Generic.xaml
index e2a8922..0285fac 100644
--- a/AIStudio.Wpf.DiagramApp/Themes/Generic.xaml
+++ b/AIStudio.Wpf.DiagramApp/Themes/Generic.xaml
@@ -3,7 +3,7 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
-
+
diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/LogicalViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/LogicalViewModel.cs
index 3fb1de3..e5943e4 100644
--- a/AIStudio.Wpf.DiagramApp/ViewModels/LogicalViewModel.cs
+++ b/AIStudio.Wpf.DiagramApp/ViewModels/LogicalViewModel.cs
@@ -190,11 +190,11 @@ namespace AIStudio.Wpf.Logical
if (item.LogicalType == LogicalType.Output)
{
- input.Value.ValueTypePoint = connector.SourceConnectorInfo.ValueTypePoint;
+ input.Value.ValueTypePoint = (connector.SourceConnectorInfo as LogicalConnectorInfo).ValueTypePoint;
}
else if (item.LogicalType == LogicalType.NOT)
{
- input.Value.ValueTypePoint = (connector.SourceConnectorInfo.ValueTypePoint == ValueTypePoint.Bool) ? ValueTypePoint.Bool : ValueTypePoint.Int;
+ input.Value.ValueTypePoint = ((connector.SourceConnectorInfo as LogicalConnectorInfo).ValueTypePoint == ValueTypePoint.Bool) ? ValueTypePoint.Bool : ValueTypePoint.Int;
}
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml b/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml
index b4d2d46..03783ec 100644
--- a/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml
+++ b/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml
@@ -64,7 +64,7 @@
-
+
diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs
index 59691d3..325ece2 100644
--- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Animations/PathAnimationViewModel.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using System.Windows;
+using System.Windows.Media;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
@@ -28,10 +29,12 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
+ connector1.ColorViewModel.FillColor.Color = Colors.Red;
connector1.ColorViewModel.LineAnimation = LineAnimation.PathAnimation;
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(DiagramViewModel, node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
+ connector2.ColorViewModel.FillColor.Color = Colors.Red;
connector2.ColorViewModel.LineAnimation = LineAnimation.PathAnimation;
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs
index 2a7230f..37cf4ed 100644
--- a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs
@@ -362,7 +362,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
LinkPointDesignerItemViewModel pointItemView = new LinkPointDesignerItemViewModel(rubberbandSelectionStartPoint.Value);
_viewModel.DirectAddItemCommand.Execute(pointItemView);
- SourceConnectorInfo = pointItemView.TopConnector;
+ SourceConnectorInfo = pointItemView.Connectors.FirstOrDefault();
}
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/FullyCreatedConnectorInfoItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/FullyCreatedConnectorInfoItem.cs
index 9420190..9880a0a 100644
--- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/FullyCreatedConnectorInfoItem.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/FullyCreatedConnectorInfoItem.cs
@@ -28,7 +28,6 @@ namespace AIStudio.Wpf.DiagramDesigner
YRatio = viewmodel.YRatio;
IsInnerPoint = viewmodel.IsInnerPoint;
IsPortless = viewmodel.IsPortless;
- ValueTypePoint = viewmodel.ValueTypePoint;
}
@@ -55,13 +54,5 @@ namespace AIStudio.Wpf.DiagramDesigner
{
get; set;
}
-
- [XmlAttribute]
- public ValueTypePoint ValueTypePoint
- {
- get; set;
- }
-
-
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs
new file mode 100644
index 0000000..c74a61b
--- /dev/null
+++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Xml.Serialization;
+
+namespace AIStudio.Wpf.DiagramDesigner
+{
+ ///
+ /// 完整连接点
+ ///
+ [Serializable]
+ [XmlInclude(typeof(LogicalConnectorInfoItem))]
+ public class LogicalConnectorInfoItem : FullyCreatedConnectorInfoItem
+ {
+
+ public LogicalConnectorInfoItem()
+ {
+
+ }
+
+ public LogicalConnectorInfoItem(LogicalConnectorInfo viewmodel) : base(viewmodel)
+ {
+ ValueTypePoint = viewmodel.ValueTypePoint;
+ }
+
+ [XmlAttribute]
+ public ValueTypePoint ValueTypePoint
+ {
+ get; set;
+ }
+ }
+
+
+}
diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs
index c444082..4f7c775 100644
--- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/LogicalGateDesignerItemBase.cs
@@ -15,10 +15,10 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public LogicalGateDesignerItemBase(LogicalGateItemViewModelBase item) : base(item)
{
- this.Connectors = new List();
- foreach (var fullyCreatedConnectorInfo in item.Connectors)
+ this.Connectors = new List();
+ foreach (var fullyCreatedConnectorInfo in item.Connectors.OfType())
{
- FullyCreatedConnectorInfoItem connector = new FullyCreatedConnectorInfoItem(fullyCreatedConnectorInfo);
+ LogicalConnectorInfoItem connector = new LogicalConnectorInfoItem(fullyCreatedConnectorInfo);
this.Connectors.Add(connector);
}
this.OrderNumber = item.OrderNumber;
@@ -28,7 +28,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
[XmlArray]
- public List Connectors { get; set; }
+ public List Connectors { get; set; }
[XmlAttribute]
public int OrderNumber { get; set; }
diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs
index 216698e..50be647 100644
--- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs
@@ -22,6 +22,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
ColorItem = new ColorItem() { LineColor = new ColorObjectItem(), FillColor = new ColorObjectItem() };
FontItem = new FontItem();
+ SharpItem = new SharpItem() { SourceMarker = new LinkMarkerItem(), SinkMarker = new LinkMarkerItem() };
}
public SelectableItemBase(SelectableViewModelBase viewmodel)
@@ -776,6 +777,7 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set;
}
+ [XmlAttribute]
public ArrowSizeStyle SizeStyle
{
get; set;
diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml
index 2359ff2..36a71d6 100644
--- a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml
@@ -2,7 +2,10 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:AIStudio.Wpf.DiagramDesigner"
xmlns:c="clr-namespace:AIStudio.Wpf.DiagramDesigner.Controls">
-
+
+
+
+
@@ -26,6 +29,81 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
- transparent extra space makes connector easier to hit
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-