diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs index 17d9257..7eb4290 100644 --- a/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs +++ b/AIStudio.Wpf.DiagramDesigner/Converters/ConectorValueConverter.cs @@ -14,31 +14,34 @@ namespace AIStudio.Wpf.DiagramDesigner { public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { - if (values == null || values.Length < 2) + if (values[0] is LogicalConnectorInfo logicalConnectorInfo) { - throw new NotImplementedException(); - } - if (values[0] is double && values[2] is ConnectorValueType) - { - double connectorValue = (double)values[0]; - string connectorString = values[1] as string; - ConnectorValueType valueTypePoint = (ConnectorValueType)values[2]; - - if (valueTypePoint == ConnectorValueType.Bool) + if (logicalConnectorInfo.ErrorCode != Enums.ConnectorErrorCode.None) { - return (connectorValue == 0) ? "F" : "T"; + if (parameter?.ToString() == "ToolTip") + { + return logicalConnectorInfo.ErrorMessage; + } + else + { + return logicalConnectorInfo.ErrorCode.ToString(); + } } - else if (valueTypePoint == ConnectorValueType.Int) + else if (logicalConnectorInfo.ConnectorValueType == ConnectorValueType.Bool) { - return connectorValue.ToString("0"); + return (logicalConnectorInfo.ConnectorValue == 0) ? "F" : "T"; } - else if (valueTypePoint == ConnectorValueType.Real) + else if (logicalConnectorInfo.ConnectorValueType == ConnectorValueType.Int) { - return connectorValue.ToString("f3"); + return logicalConnectorInfo.ConnectorValue.ToString("0"); + } + else if (logicalConnectorInfo.ConnectorValueType == ConnectorValueType.Real) + { + return logicalConnectorInfo.ConnectorValue.ToString("f3"); } else { - return connectorString; + return logicalConnectorInfo.ConnectorString; } } return null; diff --git a/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs b/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs new file mode 100644 index 0000000..55aa8d9 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorErrorCode.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AIStudio.Wpf.DiagramDesigner.Enums +{ + public enum ConnectorErrorCode + { + None, + ConnErr, + ValueErr + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs b/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorValueType.cs similarity index 86% rename from AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs rename to AIStudio.Wpf.DiagramDesigner/Enums/ConnectorValueType.cs index ec68c36..fed1710 100644 --- a/AIStudio.Wpf.DiagramDesigner/Enums/ValueTypePoint.cs +++ b/AIStudio.Wpf.DiagramDesigner/Enums/ConnectorValueType.cs @@ -10,7 +10,7 @@ namespace AIStudio.Wpf.DiagramDesigner Real = 0, Int = 1, Bool = 2, - ValueType = 10, - String = 11, + ValueType = 99, + String = 100, } } diff --git a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml index 5a9693c..7773497 100644 --- a/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml +++ b/AIStudio.Wpf.DiagramDesigner/Themes/ConnectorItem.xaml @@ -30,8 +30,8 @@ - - + + @@ -55,14 +55,19 @@ - + - - - + + + + + + + + @@ -82,14 +87,19 @@ - + - - - - + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs index f739255..ab8ea0b 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/LogicalConnectorInfo.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Text; +using AIStudio.Wpf.DiagramDesigner.Enums; using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner @@ -81,21 +83,54 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public bool ConnectorError + private ConnectorErrorCode _errorCode; + public ConnectorErrorCode ErrorCode { - get; set; - } - - public bool ValueError - { - get; set; + get + { + return _errorCode; + } + set + { + SetProperty(ref _errorCode, value); + } } + private string _errorMessage; public string ErrorMessage + { + get + { + return _errorMessage; + } + set + { + SetProperty(ref _errorMessage, value); + } + } + + public bool ConnectorChanged { get; set; } + protected override void Item_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (IsLoaded == false) { return; } + + switch (e.PropertyName) + { + case nameof(ConnectorValue): + case nameof(ConnectorString): + case nameof(ConnectorValueType): + case nameof(ErrorCode): + case nameof(ErrorMessage): + RaisePropertyChanged(nameof(ConnectorChanged)); + break; + } + + } + public override bool CanAttachTo(FullyCreatedConnectorInfo port) { if (!base.CanAttachTo(port)) diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs index eece016..6b9e993 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/LogicalGateItemViewModelBase.cs @@ -7,6 +7,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Input; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Enums; using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner @@ -276,6 +277,7 @@ namespace AIStudio.Wpf.DiagramDesigner var connector = GetSourceItem(input.Value); if (connector == null) { + input.Value.ErrorCode = ConnectorErrorCode.None; continue; } @@ -301,9 +303,9 @@ namespace AIStudio.Wpf.DiagramDesigner } else { - input.Value.ConnectorError = true; + input.Value.ErrorCode = ConnectorErrorCode.ConnErr; input.Value.ErrorMessage = "连接类型不匹配"; - input.Value.ColorViewModel.FillColor.Color = Colors.Orange; + input.Value.ColorViewModel.FillColor.Color = Colors.DarkRed; } } } @@ -313,9 +315,9 @@ namespace AIStudio.Wpf.DiagramDesigner { foreach (var output in Output) { - if (output.Value.ValueError) + if (output.Value.ErrorCode != ConnectorErrorCode.None) { - output.Value.ColorViewModel.FillColor.Color = Colors.Orange; + output.Value.ColorViewModel.FillColor.Color = Colors.DarkRed; } else if (output.Value.ConnectorValueType == ConnectorValueType.Bool) {