可以把连线从节点上拖下来,并且依附上去。

This commit is contained in:
艾竹
2023-05-03 13:28:16 +08:00
parent 1536e5018d
commit ed22b9daa3
13 changed files with 352 additions and 79 deletions

View File

@@ -410,8 +410,8 @@ namespace AIStudio.Wpf.DiagramDesigner
if (EnableSnapping)
{
var nearPort = FindNearPortToAttachTo();
if (nearPort != null || partialConnection.SinkConnectorInfoFully != null)
var nearPort = _viewModel.FindNearPortToAttachTo(partialConnection);
if (nearPort != null)
{
partialConnection.SinkConnectorInfo = nearPort;
}
@@ -632,20 +632,6 @@ namespace AIStudio.Wpf.DiagramDesigner
e.Handled = true;
this.Focus();
}
#region
private FullyCreatedConnectorInfo FindNearPortToAttachTo()
{
foreach (var port in _viewModel.Items.OfType<DesignerItemViewModelBase>().ToList().SelectMany(n => n.Connectors))
{
if (partialConnection.OnGoingPosition.DistanceTo(port.Position) < SnappingRadius &&
partialConnection.SourceConnectorInfoFully?.CanAttachTo(port) == true)
return port;
}
return null;
}
#endregion
}
}
}

View File

@@ -21,12 +21,18 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
private void DragThumb_DragStarted(object sender, DragStartedEventArgs e)
{
if (this.DataContext is ConnectorPointModel point)
{
point.DragStart = true;
}
}
private void DragThumb_DragCompleted(object sender, DragCompletedEventArgs e)
{
if (this.DataContext is ConnectorPointModel point)
{
point.DragStart = false;
}
}
void DragThumb_DragDelta(object sender, DragDeltaEventArgs e)

View File

@@ -5,6 +5,7 @@ using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using AIStudio.Wpf.DiagramDesigner.Controls;
@@ -480,7 +481,7 @@ namespace AIStudio.Wpf.DiagramDesigner
protected override void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (IsLoaded == false) return;
if (IsLoaded == false || IsInternalChanged == true ) return;
if (sender is ConnectionViewModel)
{
@@ -513,10 +514,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{
SourceConnectorInfoFully.DataItem.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
}
//else if (SourceConnectorInfoPart != null)
//{
// SourceConnectorInfoPart.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
//}
}
break;
case nameof(SinkConnectorInfo):
@@ -527,10 +524,6 @@ namespace AIStudio.Wpf.DiagramDesigner
{
SinkConnectorInfoFully.DataItem.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
}
//else if (SinkConnectorInfoPart != null)
//{
// SinkConnectorInfoPart.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
//}
}
break;
case nameof(IsSelected):
@@ -580,15 +573,48 @@ namespace AIStudio.Wpf.DiagramDesigner
break;
}
}
else if (sender is ConnectorVertexModel)
else if (sender is ConnectorVertexModel connectorVertexModel)
{
switch (e.PropertyName)
{
case nameof(ConnectorPointModel.X):
case nameof(ConnectorPointModel.Y):
UpdatePathGeneratorResult();
if (connectorVertexModel.ConnectorVertexType == ConnectorVertexType.None)
{
UpdatePathGeneratorResult();
}
else if(connectorVertexModel.ConnectorVertexType == ConnectorVertexType.Start)
{
SetSourcePort(new PartCreatedConnectorInfo(connectorVertexModel.Position.X, connectorVertexModel.Position.Y));
this.ZIndex = -1;
}
else if (connectorVertexModel.ConnectorVertexType == ConnectorVertexType.End)
{
SetSinkPort(new PartCreatedConnectorInfo(connectorVertexModel.Position.X, connectorVertexModel.Position.Y));
this.ZIndex = -1;
}
break;
case nameof(ConnectorPointModel.DragStart):
if (connectorVertexModel.DragStart == false)
{
if (connectorVertexModel.ConnectorVertexType == ConnectorVertexType.Start)
{
var nearPort = Root.FindNearPortToAttachTo(this, ConnectorVertexType.Start);
if (nearPort != null)
{
SetSourcePort(nearPort);
}
}
else if (connectorVertexModel.ConnectorVertexType == ConnectorVertexType.End)
{
var nearPort = Root.FindNearPortToAttachTo(this, ConnectorVertexType.End);
if (nearPort != null)
{
SetSinkPort(nearPort);
}
}
}
break;
}
}
else if (sender is ConnectorLabelModel linkLabelModel)
@@ -613,21 +639,6 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
}
//else if (sender is PartCreatedConnectorInfo)
//{
// if (e.PropertyName == "Position")
// {
// if (sender == SourceConnectorInfoPart)
// {
// SourceA = SourceConnectorInfo.Position;
// }
// else if (sender == SinkConnectorInfoPart)
// {
// SourceB = SinkConnectorInfo.Position;
// }
// UpdatePathGeneratorResult();
// }
//}
else if (sender is ColorViewModel)
{
@@ -679,29 +690,31 @@ namespace AIStudio.Wpf.DiagramDesigner
var startVertice = Vertices.FirstOrDefault(p => p.ConnectorVertexType == ConnectorVertexType.Start);
if (startVertice == null)
{
startVertice = new ConnectorVertexModel(this, StartPoint) { ConnectorVertexType = ConnectorVertexType.Start };
startVertice.ColorViewModel.FillColor.Color = Colors.DarkRed;
startVertice.ColorViewModel.LineColor.Color = Colors.DarkRed;
Vertices.Add(startVertice);
{
startVertice = AddEndsVertex(StartPoint, ConnectorVertexType.Start);
}
else
{
IsInternalChanged = true;
startVertice.SetPosition(StartPoint);
IsInternalChanged = true;
}
startVertice.ColorViewModel.FillColor.Color = SourceConnectorInfoFully != null? Colors.DarkRed : Colors.Blue;
startVertice.ColorViewModel.LineColor.Color = SourceConnectorInfoFully != null ? Colors.DarkRed : Colors.Blue;
var endVertice = Vertices.FirstOrDefault(p => p.ConnectorVertexType == ConnectorVertexType.End);
if (endVertice == null)
{
endVertice = new ConnectorVertexModel(this, EndPoint) { ConnectorVertexType = ConnectorVertexType.End };
endVertice.ColorViewModel.FillColor.Color = Colors.DarkRed;
endVertice.ColorViewModel.LineColor.Color = Colors.DarkRed;
Vertices.Add(endVertice);
endVertice = AddEndsVertex(EndPoint, ConnectorVertexType.End);
}
else
{
IsInternalChanged = true;
endVertice.SetPosition(EndPoint);
IsInternalChanged = false;
}
endVertice.ColorViewModel.FillColor.Color = SinkConnectorInfoFully != null ? Colors.DarkRed : Colors.Blue;
endVertice.ColorViewModel.LineColor.Color = SinkConnectorInfoFully != null ? Colors.DarkRed : Colors.Blue;
var paths = Labels.Count > 0 ? PathGeneratorResult.Paths.Select(p => new SvgPath(p)).ToArray() : Array.Empty<SvgPath>();
foreach (var label in Labels)
@@ -809,12 +822,12 @@ namespace AIStudio.Wpf.DiagramDesigner
return minPoint;
}
public void SetSourcePort(FullyCreatedConnectorInfo port)
public void SetSourcePort(ConnectorInfoBase port)
{
SourceConnectorInfo = port;
}
public void SetSinkPort(FullyCreatedConnectorInfo port)
public void SetSinkPort(ConnectorInfoBase port)
{
SinkConnectorInfo = port;
}
@@ -943,6 +956,16 @@ namespace AIStudio.Wpf.DiagramDesigner
UpdatePathGeneratorResult();
}
public ConnectorVertexModel AddEndsVertex(PointBase pointBase, ConnectorVertexType connectorVertexType)
{
var vertice = new ConnectorVertexModel(this, pointBase);
vertice.ConnectorVertexType= connectorVertexType;
vertice.PropertyChanged += new WeakINPCEventHandler(Item_PropertyChanged).Handler;
Vertices.Add(vertice);
return vertice;
}
public void RemoveVertex(ConnectorVertexModel vertice)
{
Vertices.Remove(vertice);

View File

@@ -143,7 +143,10 @@ namespace AIStudio.Wpf.DiagramDesigner
{
ConnectorHeight = ScreenHelper.MmToWidth(value);
}
}
}
public virtual bool CanAttachTo(ConnectorInfoBase port)
=> port != this && !port.IsReadOnly;
#endregion
}
}

View File

@@ -144,29 +144,48 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public virtual PointBase MiddlePosition => new PointBase(X, Y);
private double connectorWidth = 8;
private double _connectorWidth = 8;
public double ConnectorWidth
{
get
{
return connectorWidth;
return _connectorWidth;
}
set
{
connectorWidth = value;
_connectorWidth = value;
}
}
private double connectorHeight = 8;
private double _connectorHeight = 8;
public double ConnectorHeight
{
get
{
return connectorHeight;
return _connectorHeight;
}
set
{
connectorHeight = value;
_connectorHeight = value;
}
}
public void SetPosition(PointBase position)
{
X = position.X;
Y = position.Y;
}
private bool _dragStart;
public bool DragStart
{
get
{
return _dragStart;
}
set
{
SetProperty(ref _dragStart, value);
}
}

View File

@@ -86,13 +86,6 @@ namespace AIStudio.Wpf.DiagramDesigner
Connector.RemoveVertex(this);
}
}
public void SetPosition(PointBase position)
{
X = position.X;
Y = position.Y;
}
}
public enum ConnectorVertexType

View File

@@ -316,8 +316,17 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public virtual bool CanAttachTo(FullyCreatedConnectorInfo port)
=> port != this && !port.IsReadOnly && DataItem != port.DataItem;
public override bool CanAttachTo(ConnectorInfoBase port)
{
if (port is FullyCreatedConnectorInfo fullyCreatedConnectorInfo)
{
return port != this && !port.IsReadOnly && DataItem != fullyCreatedConnectorInfo.DataItem;
}
else
{
return base.CanAttachTo(port);
}
}
public override string ToString()
{

View File

@@ -136,7 +136,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public override bool CanAttachTo(FullyCreatedConnectorInfo port)
public override bool CanAttachTo(ConnectorInfoBase port)
{
if (!base.CanAttachTo(port))
{

View File

@@ -17,6 +17,11 @@ namespace AIStudio.Wpf.DiagramDesigner
{
get; set;
} = new ShortcutOption();
public SnappingOption SnappingOption
{
get; set;
} = new SnappingOption();
}
public class LayoutOption
@@ -24,6 +29,22 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public class SnappingOption
{
public bool EnableSnapping
{
get; set;
}
public double SnappingRadius
{
get; set;
} = 50;
public double HittingRadius
{
get; set;
} = 20;
}
public class ShortcutOption
{
[Description("Select All shortcut (CTRL+A by default)")]

View File

@@ -3350,5 +3350,46 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
#endregion
#region
public FullyCreatedConnectorInfo FindNearPortToAttachTo(ConnectionViewModel partialConnection, ConnectorVertexType connectorVertexType)
{
if (partialConnection == null)
return null;
foreach (var port in Items.OfType<DesignerItemViewModelBase>().ToList().SelectMany(n => n.Connectors))
{
if (connectorVertexType == ConnectorVertexType.Start)
{
if (partialConnection.SourceConnectorInfo.Position.DistanceTo(port.Position) < DiagramOption.SnappingOption.HittingRadius &&
partialConnection.SinkConnectorInfo?.CanAttachTo(port) == true)
return port;
}
else if (connectorVertexType == ConnectorVertexType.End)
{
if (partialConnection.SinkConnectorInfo.Position.DistanceTo(port.Position) < DiagramOption.SnappingOption.HittingRadius &&
partialConnection.SourceConnectorInfo?.CanAttachTo(port) == true)
return port;
}
}
return null;
}
public FullyCreatedConnectorInfo FindNearPortToAttachTo(ConnectionViewModel partialConnection)
{
if (partialConnection == null)
return null;
foreach (var port in Items.OfType<DesignerItemViewModelBase>().ToList().SelectMany(n => n.Connectors))
{
if (partialConnection.OnGoingPosition.DistanceTo(port.Position) < DiagramOption.SnappingOption.SnappingRadius &&
partialConnection.SourceConnectorInfoFully?.CanAttachTo(port) == true)
return port;
}
return null;
}
#endregion
}
}

View File

@@ -147,6 +147,11 @@ namespace AIStudio.Wpf.DiagramDesigner
get;set;
}
public bool IsInternalChanged
{
get; set;
}
public IDiagramViewModel Root
{
get; set;
@@ -461,12 +466,12 @@ namespace AIStudio.Wpf.DiagramDesigner
protected virtual void Item_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (IsLoaded == false) { return; }
if (IsLoaded == false || IsInternalChanged == true) { return; }
}
protected void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (IsLoaded == false) { return; }
if (IsLoaded == false || IsInternalChanged == true) { return; }
if (e.PropertyName == nameof(FontViewModel.FontCase))
{
@@ -478,21 +483,21 @@ namespace AIStudio.Wpf.DiagramDesigner
protected void ColorViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (IsLoaded == false) { return; }
if (IsLoaded == false || IsInternalChanged == true ) { return; }
RaisePropertyChanged(sender, e);
}
protected void ShapeViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (IsLoaded == false) { return; }
if (IsLoaded == false || IsInternalChanged == true) { return; }
RaisePropertyChanged(sender, e);
}
protected void AnimationViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (IsLoaded == false) { return; }
if (IsLoaded == false || IsInternalChanged == true) { return; }
RaisePropertyChanged(sender, e);
}

View File

@@ -405,6 +405,10 @@ namespace AIStudio.Wpf.DiagramDesigner
void LockAction(LockObject lockObject, string propertyName, List<SelectableDesignerItemViewModelBase> items);
#endregion
#region
FullyCreatedConnectorInfo FindNearPortToAttachTo(ConnectionViewModel partialConnection, ConnectorVertexType connectorVertexType);
FullyCreatedConnectorInfo FindNearPortToAttachTo(ConnectionViewModel partialConnection);
#endregion
event PropertyChangedEventHandler PropertyChanged;
}

View File

@@ -0,0 +1,163 @@
<Project>
<PropertyGroup>
<AssemblyName>AIStudio.Wpf.Logical</AssemblyName>
<IntermediateOutputPath>obj\Debug\</IntermediateOutputPath>
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
<MSBuildProjectExtensionsPath>F:\aistudio.-wpf.-diagram\Extensions\AIStudio.Wpf.Logical\obj\</MSBuildProjectExtensionsPath>
<_TargetAssemblyProjectName>AIStudio.Wpf.Logical</_TargetAssemblyProjectName>
</PropertyGroup>
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
<PropertyGroup>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\..\AIStudio.Wpf.DiagramDesigner.Serializable\AIStudio.Wpf.DiagramDesigner.Serializable.csproj" />
</ItemGroup>
<ItemGroup>
<ReferencePath Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramDesigner\bin\Debug\net461\AIStudio.Wpf.DiagramDesigner.dll" />
<ReferencePath Include="F:\aistudio.-wpf.-diagram\AIStudio.Wpf.DiagramDesigner.Serializable\bin\Debug\net461\AIStudio.Wpf.DiagramDesigner.Serializable.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\Microsoft.Win32.Primitives.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\microsoft.xaml.behaviors.wpf\1.1.31\lib\net45\Microsoft.Xaml.Behaviors.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\mscorlib.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netfx.force.conflicts.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\netstandard.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\newtonsoft.json\13.0.1\lib\net45\Newtonsoft.Json.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationCore.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\PresentationFramework.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\svgpathproperties\1.1.2\lib\netstandard2.0\SvgPathProperties.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.AppContext.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.codedom\7.0.0\lib\netstandard2.0\System.CodeDom.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.Concurrent.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.NonGeneric.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Collections.Specialized.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.EventBasedAsync.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ComponentModel.TypeConverter.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Console.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Core.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Data.Common.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Data.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Contracts.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Debug.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.FileVersionInfo.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Process.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.StackTrace.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.TextWriterTraceListener.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tools.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.TraceSource.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Diagnostics.Tracing.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Drawing.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Drawing.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Dynamic.Runtime.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.Calendars.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Globalization.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Compression.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Compression.ZipFile.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.DriveInfo.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.FileSystem.Watcher.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.IsolatedStorage.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.MemoryMappedFiles.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.Pipes.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.IO.UnmanagedMemoryStream.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Expressions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Parallel.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Linq.Queryable.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.management\7.0.0\lib\netstandard2.0\System.Management.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Http.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.NameResolution.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.NetworkInformation.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Ping.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Requests.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Security.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.Sockets.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebHeaderCollection.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebSockets.Client.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Net.WebSockets.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Numerics.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ObjectModel.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.reactive\5.0.0\lib\netstandard2.0\System.Reactive.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Reflection.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.Reader.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.ResourceManager.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Resources.Writer.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.runtime.compilerservices.unsafe\4.5.3\ref\net461\System.Runtime.CompilerServices.Unsafe.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.CompilerServices.VisualC.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Handles.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.InteropServices.RuntimeInformation.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Numerics.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Runtime.Serialization.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Formatters.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Json.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Runtime.Serialization.Xml.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Claims.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Algorithms.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Csp.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Encoding.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.Primitives.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Cryptography.X509Certificates.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.Principal.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Security.SecureString.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.Encoding.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.Encoding.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Text.RegularExpressions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Overlapped.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Tasks.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\system.threading.tasks.extensions\4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Tasks.Parallel.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Thread.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.ThreadPool.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Threading.Timer.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.ValueTuple.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Windows.Controls.Ribbon.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xaml.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.Xml.Linq.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.ReaderWriter.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XDocument.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XmlDocument.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XmlSerializer.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XPath.dll" />
<ReferencePath Include="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\Microsoft.NET.Build.Extensions\net461\lib\System.Xml.XPath.XDocument.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationClient.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationClientsideProviders.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationProvider.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\UIAutomationTypes.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\WindowsBase.dll" />
<ReferencePath Include="C:\Users\Administrator\.nuget\packages\wpfanimatedgif\2.0.0\lib\net40\WpfAnimatedGif.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ComponentModel.Annotations.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.ILGeneration.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Reflection.Emit.Lightweight.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.Runtime.InteropServices.WindowsRuntime.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Duplex.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Http.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.NetTcp.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Primitives.dll" />
<ReferencePath Include="C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Facades\System.ServiceModel.Security.dll" />
</ItemGroup>
<ItemGroup>
<Compile Include="F:\aistudio.-wpf.-diagram\Extensions\AIStudio.Wpf.Logical\obj\Debug\net461\GeneratedInternalTypeHelper.g.cs" />
</ItemGroup>
<ItemGroup>
<Analyzer Include="C:\Users\Administrator\.nuget\packages\wpfanalyzers\3.5.4\analyzers\dotnet\cs\Gu.Roslyn.Extensions.dll" />
<Analyzer Include="C:\Users\Administrator\.nuget\packages\wpfanalyzers\3.5.4\analyzers\dotnet\cs\WpfAnalyzers.dll" />
</ItemGroup>
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk.WindowsDesktop" />
</Project>