diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs
index 58e4c86..87ad511 100644
--- a/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Controls/DesignerCanvas.cs
@@ -594,6 +594,8 @@ namespace AIStudio.Wpf.DiagramDesigner
if (_viewModel.IsReadOnly) return;
+
+
if (_service.DrawModeViewModel.CursorMode == CursorMode.Format)
{
var element = (e.OriginalSource as FrameworkElement);
@@ -652,6 +654,10 @@ namespace AIStudio.Wpf.DiagramDesigner
e.Handled = true;
}
}
+ else
+ {
+ this.Focus();
+ }
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorOrientationConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorOrientationConverter.cs
index f42175d..8e5ef89 100644
--- a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorOrientationConverter.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorOrientationConverter.cs
@@ -5,13 +5,15 @@ using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Data;
+using System.Windows.Markup;
using System.Windows.Media;
using System.Windows.Media.Imaging;
namespace AIStudio.Wpf.DiagramDesigner
{
- public class ConectorOrientationConverter : IValueConverter
+ public class ConectorOrientationConverter : MarkupExtension, IValueConverter
{
+ public double Parameter { get; set; } = 5;
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
@@ -19,7 +21,12 @@ namespace AIStudio.Wpf.DiagramDesigner
{
string str = value as string;
- return -5 - (str.Length * 4);
+ var length = 0 - Parameter - (str.Length * 4);
+ return length;
+ }
+ else if (value is double)
+ {
+ return -Parameter - (double)value;
}
return null;
}
@@ -28,5 +35,13 @@ namespace AIStudio.Wpf.DiagramDesigner
{
throw new NotImplementedException();
}
+
+ public override object ProvideValue(System.IServiceProvider serviceProvider)
+ {
+ return new ConectorOrientationConverter
+ {
+ Parameter = this.Parameter,
+ };
+ }
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs b/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs
index 55aa8d9..412e5f9 100644
--- a/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs
@@ -10,6 +10,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Enums
{
None,
ConnErr,
- ValueErr
+ ValueErr,
+ ExecuteErr,
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs
index ad303b2..02b4581 100644
--- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs
+++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/Connector/LogicalConnectorInfoItem.cs
@@ -23,6 +23,7 @@ namespace AIStudio.Wpf.DiagramDesigner
ConnectorValueType = viewmodel.ConnectorValueType;
ConnectorValue = viewmodel.ConnectorValue;
ConnectorString = viewmodel.ConnectorString;
+ ConnectorRemark = viewmodel.ConnectorRemark;
}
[XmlAttribute]
@@ -42,6 +43,12 @@ namespace AIStudio.Wpf.DiagramDesigner
{
get; set;
}
+
+ [XmlAttribute]
+ public string ConnectorRemark
+ {
+ get; set;
+ }
}
diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml
index 5da582b..6038b49 100644
--- a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml
@@ -72,7 +72,7 @@
-
+
@@ -101,6 +101,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -109,8 +126,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -138,6 +167,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml
index c8b9410..5e466e5 100644
--- a/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml
+++ b/AIStudio.Wpf.DiagramDesigner/Themes/DiagramControl.xaml
@@ -390,6 +390,12 @@
Value="{Binding MinItemHeight}" />
+
+
+
@@ -414,7 +420,7 @@
-
+
+
+
+
@@ -750,6 +762,12 @@
+
+
+
@@ -776,11 +794,17 @@
-
-
+
+
+
+
+
+
+
+
diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/ConnectorContainer.xaml.cs b/AIStudio.Wpf.DiagramDesigner/UserControls/ConnectorContainer.xaml.cs
index e959e21..b62c47b 100644
--- a/AIStudio.Wpf.DiagramDesigner/UserControls/ConnectorContainer.xaml.cs
+++ b/AIStudio.Wpf.DiagramDesigner/UserControls/ConnectorContainer.xaml.cs
@@ -66,8 +66,8 @@ namespace AIStudio.Wpf.DiagramDesigner
var vm = connector.DataContext as FullyCreatedConnectorInfo;
if (vm != null)
{
- Canvas.SetLeft(connector, vm.DataItem.ItemWidth * vm.XRatio - vm.ConnectorWidth / 2);
- Canvas.SetTop(connector, vm.DataItem.ItemHeight * vm.YRatio - vm.ConnectorHeight / 2);
+ Canvas.SetLeft(connector, vm.DataItem.GetItemWidth() * vm.XRatio - vm.ConnectorWidth / 2);
+ Canvas.SetTop(connector, vm.DataItem.GetItemHeight() * vm.YRatio - vm.ConnectorHeight / 2);
}
}
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
index 0b992a1..ff4e74f 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs
@@ -561,6 +561,8 @@ namespace AIStudio.Wpf.DiagramDesigner
case nameof(DesignerItemViewModelBase.ItemWidth):
case nameof(DesignerItemViewModelBase.Left):
case nameof(DesignerItemViewModelBase.Top):
+ case nameof(DesignerItemViewModelBase.ActualItemHeight):
+ case nameof(DesignerItemViewModelBase.ActualItemWidth):
if (IsFullConnection)
{
//减少触发一次画线
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs
index 74e660d..e8112df 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs
@@ -41,6 +41,7 @@ namespace AIStudio.Wpf.DiagramDesigner
ConnectorValue = designer.ConnectorValue;
ConnectorValueType = designer.ConnectorValueType;
ConnectorString = designer.ConnectorString;
+ ConnectorRemark = designer.ConnectorRemark;
}
}
@@ -71,6 +72,19 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
+ private string _connectorRemark;
+ public string ConnectorRemark
+ {
+ get
+ {
+ return _connectorRemark;
+ }
+ set
+ {
+ SetProperty(ref _connectorRemark, value);
+ }
+ }
+
private ConnectorValueType _connectorValueType;
public ConnectorValueType ConnectorValueType
{
@@ -154,7 +168,23 @@ namespace AIStudio.Wpf.DiagramDesigner
{
return true;
}
- else if (logical.ConnectorValueType <= ConnectorValueType.ValueType && this.ConnectorValueType <= ConnectorValueType.ValueType)
+ else if (logical.ConnectorValueType == ConnectorValueType.Int && this.ConnectorValueType == ConnectorValueType.Int)
+ {
+ return true;
+ }
+ else if (logical.ConnectorValueType == ConnectorValueType.Real && this.ConnectorValueType == ConnectorValueType.Real)
+ {
+ return true;
+ }
+ else if (logical.ConnectorValueType == ConnectorValueType.Bool && this.ConnectorValueType == ConnectorValueType.Bool)
+ {
+ return true;
+ }
+ else if (logical.ConnectorValueType == ConnectorValueType.ValueType && this.ConnectorValueType <= ConnectorValueType.ValueType)
+ {
+ return true;
+ }
+ else if (logical.ConnectorValueType <= ConnectorValueType.ValueType && this.ConnectorValueType == ConnectorValueType.ValueType)
{
return true;
}
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
index d5ed9eb..967f47e 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs
@@ -1259,9 +1259,9 @@ namespace AIStudio.Wpf.DiagramDesigner
item.Id = Guid.NewGuid();
}
- if (item is LogicalGateItemViewModelBase logical)
+ if (item is LogicalGateItemViewModelBase logical && logical.OrderNumber == 0)
{
- logical.OrderNumber = Items.OfType().Count() + 1;
+ logical.OrderNumber = Items.OfType().Where(p => p.OrderNumber > 0).Count() + 1;
}
//if (item is BlockDesignerItemViewModel block)
//{
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs
index a0f3b0a..d9df044 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/SelectableViewModelBase.cs
@@ -458,9 +458,17 @@ namespace AIStudio.Wpf.DiagramDesigner
}
[Browsable(true)]
+ private string _name;
public string Name
{
- get; set;
+ get
+ {
+ return _name;
+ }
+ set
+ {
+ SetProperty(ref _name, value);
+ }
}
private string _text;
diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs
index fe5e6af..36f7613 100644
--- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs
+++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs
@@ -360,6 +360,14 @@ namespace AIStudio.Wpf.DiagramDesigner
return false;
}
+ if (output.ErrorCode == ConnectorErrorCode.ExecuteErr)
+ {
+ input.ErrorCode = ConnectorErrorCode.ExecuteErr;
+ input.ErrorMessage = "无效的输入";
+ input.ColorViewModel.FillColor.Color = Colors.DarkRed;
+ return false;
+ }
+
return true;
}