From 40590bf98d60ac6a6eb4e1323e800ee32b602142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Wed, 25 Jan 2023 14:42:01 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E6=9D=A1=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...udio.Wpf.DiagramApp_1aj2agka_wpftmp.csproj | 1051 +++++++++++++++++ .../AttachedProperties/IsSelectedProps.cs | 30 + .../Converters/MathConverter.cs | 53 + .../UserControls/DiagramControl.xaml | 77 +- .../UserControls/LineControl.xaml | 77 +- .../UserControls/LineControl.xaml.cs | 18 - .../BaseViewModel/ConnectionViewModel.cs | 5 +- .../Connector/ConnectorLabelModel.cs | 3 + .../Connector/ConnectorPointModel.cs | 2 +- ...o.Wpf.DiagramHelper_ncdg2nsb_wpftmp.csproj | 289 +++++ 10 files changed, 1496 insertions(+), 109 deletions(-) create mode 100644 AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_1aj2agka_wpftmp.csproj create mode 100644 AIStudio.Wpf.DiagramDesigner/AttachedProperties/IsSelectedProps.cs create mode 100644 AIStudio.Wpf.DiagramDesigner/Converters/MathConverter.cs create mode 100644 AIStudio.Wpf.DiagramHelper/AIStudio.Wpf.DiagramHelper_ncdg2nsb_wpftmp.csproj diff --git a/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_1aj2agka_wpftmp.csproj b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_1aj2agka_wpftmp.csproj new file mode 100644 index 0000000..b78e6e2 --- /dev/null +++ b/AIStudio.Wpf.DiagramApp/AIStudio.Wpf.DiagramApp_1aj2agka_wpftmp.csproj @@ -0,0 +1,1051 @@ + + + AIStudio.Wpf.DiagramApp + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramApp\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.DiagramApp + + + + WinExe + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + 8.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AIStudio.Wpf.DiagramDesigner/AttachedProperties/IsSelectedProps.cs b/AIStudio.Wpf.DiagramDesigner/AttachedProperties/IsSelectedProps.cs new file mode 100644 index 0000000..6abeabf --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/AttachedProperties/IsSelectedProps.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows; +using System.Windows.Input; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public static class IsSelectedProps + { + #region IsSelected + + public static readonly DependencyProperty IsSelectedProperty = + DependencyProperty.RegisterAttached("IsSelected", typeof(bool), typeof(IsSelectedProps), + new FrameworkPropertyMetadata(false)); + + public static bool GetIsSelected(DependencyObject d) + { + return (bool)d.GetValue(IsSelectedProperty); + } + + public static void SetIsSelected(DependencyObject d, bool value) + { + d.SetValue(IsSelectedProperty, value); + } + + #endregion + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/Converters/MathConverter.cs b/AIStudio.Wpf.DiagramDesigner/Converters/MathConverter.cs new file mode 100644 index 0000000..eb29329 --- /dev/null +++ b/AIStudio.Wpf.DiagramDesigner/Converters/MathConverter.cs @@ -0,0 +1,53 @@ +using System; +using System.Globalization; +using System.Windows.Data; + +namespace AIStudio.Wpf.DiagramDesigner +{ + public enum MathOperation + { + Add, + Subtract, + Multiply, + Divide + } + + public sealed class MathConverter : IValueConverter + { + public MathOperation Operation + { + get; set; + } + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + try + { + double value1 = System.Convert.ToDouble(value, CultureInfo.InvariantCulture); + double value2 = System.Convert.ToDouble(parameter, CultureInfo.InvariantCulture); + switch (Operation) + { + case MathOperation.Add: + return value1 + value2; + case MathOperation.Divide: + return value1 / value2; + case MathOperation.Multiply: + return value1 * value2; + case MathOperation.Subtract: + return value1 - value2; + default: + return Binding.DoNothing; + } + } + catch (FormatException) + { + return Binding.DoNothing; + } + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return Binding.DoNothing; + } + } +} diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml index 484512c..6a38c87 100644 --- a/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml +++ b/AIStudio.Wpf.DiagramDesigner/UserControls/DiagramControl.xaml @@ -527,60 +527,7 @@ - - - - - - - - - - - - - - - - - - - - - - - + - - - - @@ -666,16 +601,6 @@ Property="Visibility" Value="Visible"/> - - - - - - - - - - diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml b/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml index e0d6ce3..913e28a 100644 --- a/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml +++ b/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml @@ -9,12 +9,33 @@ + + + + + - + @@ -22,16 +43,48 @@ - + + + + + + + + - + + + + + + + + + + diff --git a/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml.cs b/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml.cs index 7d6b25c..9a52104 100644 --- a/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml.cs +++ b/AIStudio.Wpf.DiagramDesigner/UserControls/LineControl.xaml.cs @@ -20,24 +20,6 @@ namespace AIStudio.Wpf.DiagramDesigner /// public partial class LineControl : UserControl { - public static readonly DependencyProperty IsSelectedProperty = DependencyProperty.Register( - nameof(IsSelected), typeof(bool), typeof(LineControl), new FrameworkPropertyMetadata( - false, OnIsSelectedChanged)); - - private static void OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) - { - if (object.Equals(e.NewValue, true)) - { - (d as LineControl).line.Stroke = Brushes.Black; - } - } - - public bool IsSelected - { - get => (bool)GetValue(IsSelectedProperty); - set => SetValue(IsSelectedProperty, value); - } - public LineControl() { InitializeComponent(); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs index 44583fd..942b0e1 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/ConnectionViewModel.cs @@ -56,8 +56,9 @@ namespace AIStudio.Wpf.DiagramDesigner if (Root != null && Root.ColorViewModel != null) { - this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel); + this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel); } + this.ColorViewModel.FillColor.Color = Colors.Red; if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false) { this.ColorViewModel.RightArrowPathStyle = ArrowPathStyle.None; @@ -714,7 +715,7 @@ namespace AIStudio.Wpf.DiagramDesigner label.IsSelected = true; Labels.Add(label); - var paths = Labels.Count > 0 ? PathGeneratorResult.Paths.Select(p => new SvgPath(p)).ToArray() : Array.Empty(); + var paths = Labels.Count > 0 ? PathGeneratorResult?.Paths.Select(p => new SvgPath(p)).ToArray() : Array.Empty(); label.UpdatePosition(paths); } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs index e4c96b7..b5370f6 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorLabelModel.cs @@ -105,6 +105,9 @@ namespace AIStudio.Wpf.DiagramDesigner public void UpdatePosition(SvgPath[] paths) { + if (paths == null) + return; + var position = FindPosition(paths); if (position == null) return; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs index 62066f5..a7ea667 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorPointModel.cs @@ -49,7 +49,7 @@ namespace AIStudio.Wpf.DiagramDesigner ColorViewModel = new ColorViewModel() { LineColor = new ColorObject() { Color = Color.FromArgb(0xAA, 0x00, 0x00, 0x80) }, - FillColor = new ColorObject() { Color = Colors.Lavender }, + FillColor = new ColorObject() { Color = Colors.White }, }; } diff --git a/AIStudio.Wpf.DiagramHelper/AIStudio.Wpf.DiagramHelper_ncdg2nsb_wpftmp.csproj b/AIStudio.Wpf.DiagramHelper/AIStudio.Wpf.DiagramHelper_ncdg2nsb_wpftmp.csproj new file mode 100644 index 0000000..88121e4 --- /dev/null +++ b/AIStudio.Wpf.DiagramHelper/AIStudio.Wpf.DiagramHelper_ncdg2nsb_wpftmp.csproj @@ -0,0 +1,289 @@ + + + AIStudio.Wpf.DiagramHelper + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramHelper\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.DiagramHelper + + + + true + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + A.png + + + 1.0.1 + 一个Wpf的Diagram控件帮助库 + + + + + + + + + + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file