diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/FlowchartViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/FlowchartViewModel.cs
index 0e89210..4252a5d 100644
--- a/AIStudio.Wpf.DiagramApp/ViewModels/FlowchartViewModel.cs
+++ b/AIStudio.Wpf.DiagramApp/ViewModels/FlowchartViewModel.cs
@@ -78,14 +78,14 @@ namespace AIStudio.Wpf.Flowchart
ConnectorViewModel connector3 = new ConnectorViewModel(decide.RightConnector, middle2.TopConnector, _service.DrawModeViewModel.LineDrawMode, _service.DrawModeViewModel.LineRouterMode);
DiagramViewModel.DirectAddItemCommand.Execute(connector3);
- connector3.AddText(">=3");
+ connector3.AddLabel(">=3");
ConnectorViewModel connector4 = new ConnectorViewModel(middle2.BottomConnector, cobegin.TopConnector, _service.DrawModeViewModel.LineDrawMode, _service.DrawModeViewModel.LineRouterMode);
DiagramViewModel.DirectAddItemCommand.Execute(connector4);
ConnectorViewModel connector5 = new ConnectorViewModel(decide.BottomConnector, cobegin.TopConnector, _service.DrawModeViewModel.LineDrawMode, _service.DrawModeViewModel.LineRouterMode);
DiagramViewModel.DirectAddItemCommand.Execute(connector5);
- connector5.AddText("<3");
+ connector5.AddLabel("<3");
ConnectorViewModel connector6 = new ConnectorViewModel(cobegin.BottomConnector, middle3.TopConnector, _service.DrawModeViewModel.LineDrawMode, _service.DrawModeViewModel.LineRouterMode);
DiagramViewModel.DirectAddItemCommand.Execute(connector6);
diff --git a/AIStudio.Wpf.DiagramDesigner/AttachedProperties/ConnectorStyleProps.cs b/AIStudio.Wpf.DiagramDesigner/AttachedProperties/ConnectorStyleProps.cs
new file mode 100644
index 0000000..1221e2b
--- /dev/null
+++ b/AIStudio.Wpf.DiagramDesigner/AttachedProperties/ConnectorStyleProps.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Windows;
+
+namespace AIStudio.Wpf.DiagramDesigner
+{
+ public static class ConnectorStyleProps
+ {
+ public static readonly DependencyProperty StyleProperty =
+ DependencyProperty.RegisterAttached("Style", typeof(Style), typeof(ConnectorStyleProps),
+ new FrameworkPropertyMetadata(default(Style)));
+
+ public static Style GetStyle(DependencyObject d)
+ {
+ return (Style)d.GetValue(StyleProperty);
+ }
+
+ public static void SetStyle(DependencyObject d, Style value)
+ {
+ d.SetValue(StyleProperty, value);
+ }
+
+ }
+}
diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/Connector.cs b/AIStudio.Wpf.DiagramDesigner/Controls/Connector.cs
index 9762412..b82b2ce 100644
--- a/AIStudio.Wpf.DiagramDesigner/Controls/Connector.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Controls/Connector.cs
@@ -12,6 +12,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public class Connector : Control
{
+
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
{
base.OnMouseLeftButtonDown(e);
diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorStyleConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorStyleConverter.cs
new file mode 100644
index 0000000..32d6c20
--- /dev/null
+++ b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorStyleConverter.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Text;
+using System.Windows;
+using System.Windows.Data;
+
+namespace AIStudio.Wpf.DiagramDesigner
+{
+ public class ConectorStyleConverter : IValueConverter
+ {
+ public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
+ {
+ if (value == null)
+ {
+ if (parameter is Style style)
+ {
+ return style;
+ }
+ else if (parameter is string str)
+ {
+ return Application.Current.FindResource(str) as Style;
+ }
+ else
+ {
+ return Application.Current.FindResource("DefaultConnectorStyle") as Style;
+ }
+ }
+
+ return value;
+ }
+
+ public object ConvertBack(object value, Type targetTypes, object parameter, CultureInfo culture)
+ {
+ return DependencyProperty.UnsetValue;
+ }
+ }
+}
diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml
index 2ca2801..8047cc7 100644
--- a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml
@@ -23,7 +23,8 @@
-
+
+
-
-
-
-
-
+
+
+
-
+
-
+
new PointBase(Parent.Area.Left + Left + ConnectorWidth / 2, Parent.Area.Top + Top + ConnectorHeight / 2);
-
private bool updating = false;
public void UpdatePosition(SvgPath[] paths)
@@ -167,5 +164,13 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
+ private void DeleteLabel(object parameter)
+ {
+ if (parameter is ConnectorLabelModel label)
+ {
+ Parent.Labels.Remove(label);
+ }
+ }
+
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs
index 66e2ac5..ce06521 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorVertexModel.cs
@@ -9,6 +9,8 @@ namespace AIStudio.Wpf.DiagramDesigner
Parent = parent;
X = position?.X ?? 0;
Y = position?.Y ?? 0;
+
+ DeleteVertexCommand = new SimpleCommand(DeleteVertex);
}
public ConnectorViewModel Parent
@@ -26,5 +28,18 @@ namespace AIStudio.Wpf.DiagramDesigner
public override PointBase MiddlePosition => new PointBase(Parent.Area.Left + Left + ConnectorWidth / 2, Parent.Area.Top + Top + ConnectorHeight / 2);
+ public SimpleCommand DeleteVertexCommand
+ {
+ get; set;
+ }
+
+ private void DeleteVertex(object parameter)
+ {
+ if (parameter is ConnectorVertexModel vertice)
+ {
+ Parent.Vertices.Remove(vertice);
+ }
+ }
+
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs
index 71a075c..7507db6 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectorViewModel.cs
@@ -61,7 +61,7 @@ namespace AIStudio.Wpf.DiagramDesigner
this.SinkConnectorInfo = sinkConnectorInfo;
DeleteConnectionCommand = new SimpleCommand(DeleteConnection);
AddVertexCommand = new SimpleCommand(AddVertex);
- AddTextCommand = new SimpleCommand(AddText);
+ AddLabelCommand = new SimpleCommand(AddLabel);
}
protected void LoadDesignerItemViewModel(SelectableDesignerItemBase designerbase)
@@ -339,7 +339,7 @@ namespace AIStudio.Wpf.DiagramDesigner
get; set;
}
- public SimpleCommand AddTextCommand
+ public SimpleCommand AddLabelCommand
{
get; set;
}
@@ -643,10 +643,10 @@ namespace AIStudio.Wpf.DiagramDesigner
protected override void ExecuteEditCommand(object param)
{
- AddText();
+ AddLabel();
}
- public void AddText(object text = null)
+ public void AddLabel(object text = null)
{
var label = new ConnectorLabelModel(this, text?.ToString());
label.PropertyChanged += new WeakINPCEventHandler(ConnectorViewModel_PropertyChanged).Handler;
@@ -656,6 +656,8 @@ namespace AIStudio.Wpf.DiagramDesigner
var paths = Labels.Count > 0 ? PathGeneratorResult.Paths.Select(p => new SvgPath(p)).ToArray() : Array.Empty();
label.UpdatePosition(paths);
}
+
+
#endregion
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs
index 9988ad1..27f9c94 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs
@@ -69,6 +69,7 @@ namespace AIStudio.Wpf.DiagramDesigner
connectors.Add(new FullyCreatedConnectorInfo(this, ConnectorOrientation.Right));
}
+ #region 属性
public FullyCreatedConnectorInfo TopConnector
{
get { return (connectors != null && connectors.Count >= 1) ? connectors[0] : null; }
@@ -89,6 +90,11 @@ namespace AIStudio.Wpf.DiagramDesigner
get { return (connectors != null && connectors.Count >= 4) ? connectors[3] : null; }
}
+ public Style ConnectorStyle
+ {
+ get; set;
+ }
+
public ShapeDefiner ShapeDefiner
{
get;
@@ -348,6 +354,9 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
+ #endregion
+
+ #region 方法
public void AddConnector(FullyCreatedConnectorInfo connector)
{
if (!connectors.Contains(connector))
@@ -449,5 +458,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public IShape GetShape() => ShapeDefiner(this);
+
+ #endregion
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/FullyCreatedConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/FullyCreatedConnectorInfo.cs
index 0e8da68..90cf796 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/FullyCreatedConnectorInfo.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/FullyCreatedConnectorInfo.cs
@@ -136,6 +136,19 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
+ private Style _style;
+ public Style Style
+ {
+ get
+ {
+ return _style;
+ }
+ set
+ {
+ SetProperty(ref _style, value);
+ }
+ }
+
public SimpleCommand DeleteCommand
{
get; private set;
diff --git a/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs b/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs
index 45f54a8..b85900c 100644
--- a/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs
+++ b/AIStudio.Wpf.Flowchart/Models/DiagramDataExtention.cs
@@ -231,7 +231,7 @@ namespace AIStudio.Wpf.Flowchart.Models
linkModel.ColorViewModel.LineWidth = diagramLink.Width;
if (!string.IsNullOrEmpty(diagramLink.Label))
{
- linkModel.AddText(diagramLink.Label);
+ linkModel.AddLabel(diagramLink.Label);
}
//线条形状与箭头待处理
//switch (diagramLink.Router)