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