diff --git a/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj b/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj
index 0868aa8..4d59dbc 100644
--- a/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj
+++ b/AIStudio.Wpf.DiagramDesigner/AIStudio.Wpf.DiagramDesigner.csproj
@@ -8,7 +8,7 @@
A.png
- 1.2.0
+ 1.2.5
一个Wpf的Diagram控件基础库
diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ConverterValueMapToBool.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ConverterValueMapToBool.cs
index beb3068..9681b25 100644
--- a/AIStudio.Wpf.DiagramDesigner/Converters/ConverterValueMapToBool.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Converters/ConverterValueMapToBool.cs
@@ -67,6 +67,10 @@ namespace AIStudio.Wpf.DiagramDesigner.Converters
result = System.Convert.ToInt32(result);
else if (targetType == typeof(Int16))
result = System.Convert.ToInt16(result);
+ else if (targetType == typeof(double))
+ result = System.Convert.ToDouble(result);
+ else if (targetType == typeof(float))
+ result = System.Convert.ToSingle(result);
else if (targetType == typeof(char))
result = result.ToString().First();
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Properties/PublishProfiles/FolderProfile.pubxml b/AIStudio.Wpf.DiagramDesigner/Properties/PublishProfiles/FolderProfile.pubxml
new file mode 100644
index 0000000..1d2540d
--- /dev/null
+++ b/AIStudio.Wpf.DiagramDesigner/Properties/PublishProfiles/FolderProfile.pubxml
@@ -0,0 +1,13 @@
+
+
+
+
+ Release
+ Any CPU
+ bin\Release\net461\publish\
+ FileSystem
+ <_TargetId>Folder
+
+
\ No newline at end of file
diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml
index 5e466e5..848e8ce 100644
--- a/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml
@@ -505,13 +505,17 @@
-
+
+
+
+
+
@@ -802,6 +806,9 @@
+
+
+
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
index ff4e74f..a09c21d 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
@@ -78,6 +78,12 @@ namespace AIStudio.Wpf.DiagramDesigner
AddLabelCommand = new SimpleCommand(Command_Enable, para => AddLabel());
}
+ protected override void InitNew()
+ {
+ base.InitNew();
+ ZIndex = -1;
+ }
+
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
index 967f47e..b086818 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
@@ -1253,15 +1253,28 @@ namespace AIStudio.Wpf.DiagramDesigner
private void Add(SelectableDesignerItemViewModelBase item, bool? isSelected = true)
{
item.Root = this;
- item.ZIndex = Items.Any() ? Items.Max(p => p.ZIndex) + 1 : 0;
+ if (item.ZIndex == 0)
+ {
+ item.ZIndex = Items.Any() ? Items.Max(p => p.ZIndex) + 1 : 0;
+ }
if (item.Id == Guid.Empty)
{
item.Id = Guid.NewGuid();
}
- if (item is LogicalGateItemViewModelBase logical && logical.OrderNumber == 0)
+ if (item is LogicalGateItemViewModelBase logical)
{
- logical.OrderNumber = Items.OfType().Where(p => p.OrderNumber > 0).Count() + 1;
+ if (logical.OrderNumber == 0 || Items.OfType().Any(p => p.OrderNumber == logical.OrderNumber))
+ {
+ if (Items.OfType().Any())
+ {
+ logical.OrderNumber = Items.OfType().OrderByDescending(p => p.OrderNumber).FirstOrDefault().OrderNumber + 1;
+ }
+ else
+ {
+ logical.OrderNumber = 1;
+ }
+ }
}
//if (item is BlockDesignerItemViewModel block)
//{
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs
index 36f7613..ecc6b36 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs
@@ -205,10 +205,10 @@ namespace AIStudio.Wpf.DiagramDesigner
public virtual LogicalConnectorInfo ExecuteAddToInput(LogicalConnectorInfo connector)
{
- if (Input.Values.Count >= 2)
- {
- this.ItemHeight = this.ItemHeight * (Input.Values.Count + 1) / Input.Values.Count;
- }
+ //if (Input.Values.Count >= 2)
+ //{
+ // this.ItemHeight = this.ItemHeight * (Input.Values.Count + 1) / Input.Values.Count;
+ //}
connector.Orientation = ConnectorOrientation.Left;
connector.IsInnerPoint = true;
connector.IsPortless = false;
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DrawingDesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DrawingDesignerItemViewModelBase.cs
index 8ed6180..f5cd0a8 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DrawingDesignerItemViewModelBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/DrawingDesignerItemViewModelBase.cs
@@ -84,11 +84,16 @@ namespace AIStudio.Wpf.DiagramDesigner
if (designerbase is DrawingDesignerItemBase designer)
{
this.Erasable = designer.Erasable;
- this.Geometry = PathGeometry.CreateFromGeometry(Geometry.Parse(designer.Geometry));
- if (!string.IsNullOrEmpty(designer.Matrix))
+ try
{
- this.Geometry.Transform = Transform.Parse(designer.Matrix);
+
+ this.Geometry = PathGeometry.CreateFromGeometry(Geometry.Parse(designer.Geometry));
+ if (!string.IsNullOrEmpty(designer.Matrix))
+ {
+ this.Geometry.Transform = Transform.Parse(designer.Matrix);
+ }
}
+ catch { }
this.Points = designer.Points;
this.DrawMode = designer.DrawMode;
this.SelectedDisable = Erasable;
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs
index aed98ac..3845ca9 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/EllipseDrawingDesignerItemViewModel.cs
@@ -44,7 +44,16 @@ namespace AIStudio.Wpf.DiagramDesigner
base.InitNewDrawing();
}
+ protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
+ {
+ base.LoadDesignerItemViewModel(designerbase);
+ if (designerbase is DrawingDesignerItemBase designer)
+ {
+ IsFinish = true;
+ InitNewDrawing();
+ }
+ }
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs
index 0a717d7..a695b1a 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/LineDrawingDesignerItemViewModel.cs
@@ -45,6 +45,17 @@ namespace AIStudio.Wpf.DiagramDesigner
base.InitNewDrawing();
}
+ protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
+ {
+ base.LoadDesignerItemViewModel(designerbase);
+
+ if (designerbase is DrawingDesignerItemBase designer)
+ {
+ IsFinish = true;
+ InitNewDrawing();
+ }
+ }
+
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs
index 867374b..ce685d5 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DrawingViewModel/Erasable/RectangleDrawingDesignerItemViewModel.cs
@@ -44,6 +44,17 @@ namespace AIStudio.Wpf.DiagramDesigner
base.InitNewDrawing();
}
+ protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
+ {
+ base.LoadDesignerItemViewModel(designerbase);
+
+ if (designerbase is DrawingDesignerItemBase designer)
+ {
+ IsFinish = true;
+ InitNewDrawing();
+ }
+ }
+
public override bool OnMouseMove(IInputElement sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
diff --git a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml
index 03783ec..d1f439b 100644
--- a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml
+++ b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/App.xaml
@@ -65,6 +65,7 @@
+
diff --git a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/SimpleViewModel.cs b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/SimpleViewModel.cs
index 811dad1..28fa561 100644
--- a/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/SimpleViewModel.cs
+++ b/Demos/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/SimpleViewModel.cs
@@ -18,13 +18,13 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DiagramViewModel.ColorViewModel = new ColorViewModel();
DiagramViewModel.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
- DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50, Text = "1" };
+ DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 50, Top = 50,};
DiagramViewModel.Add(node1);
- DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300, Text = "2" };
+ DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 300 };
DiagramViewModel.Add(node2);
- DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50, Text = "3" };
+ DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel(DiagramViewModel) { Left = 300, Top = 50};
DiagramViewModel.Add(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(DiagramViewModel, node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);