mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-02 15:50:51 +08:00
xx
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
<PackageIcon>A.png</PackageIcon>
|
||||
<PackageIconUrl />
|
||||
<NeutralLanguage />
|
||||
<Version>1.2.0</Version>
|
||||
<Version>1.2.5</Version>
|
||||
<Description>一个Wpf的Diagram控件基础库</Description>
|
||||
</PropertyGroup>
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Any CPU</Platform>
|
||||
<PublishDir>bin\Release\net461\publish\</PublishDir>
|
||||
<PublishProtocol>FileSystem</PublishProtocol>
|
||||
<_TargetId>Folder</_TargetId>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -505,13 +505,17 @@
|
||||
</MultiDataTrigger>
|
||||
<DataTrigger Binding="{Binding ShowResize}" Value="false">
|
||||
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding Connectors.Count}" Value="0">
|
||||
<Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding IsInnerConnector}" Value="True">
|
||||
<Setter TargetName="PART_ConnectorDecorator" Property="Template" Value="{StaticResource InnerConnectorDecoratorTemplate}" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding IsReadOnly}" Value="true">
|
||||
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Collapsed"/>
|
||||
<Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Collapsed" />
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding SelectedDisable}" Value="True">
|
||||
<Setter TargetName="selectedGrid" Property="IsHitTestVisible" Value="False" />
|
||||
</DataTrigger>
|
||||
@@ -802,6 +806,9 @@
|
||||
<DataTrigger Binding="{Binding ShowResize}" Value="false">
|
||||
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding IsReadOnly}" Value="true">
|
||||
<Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Collapsed"/>
|
||||
</DataTrigger>
|
||||
<DataTrigger Binding="{Binding SelectedDisable}" Value="True">
|
||||
<Setter TargetName="selectedGrid" Property="IsHitTestVisible" Value="False" />
|
||||
</DataTrigger>
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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<LogicalGateItemViewModelBase>().Where(p => p.OrderNumber > 0).Count() + 1;
|
||||
if (logical.OrderNumber == 0 || Items.OfType<LogicalGateItemViewModelBase>().Any(p => p.OrderNumber == logical.OrderNumber))
|
||||
{
|
||||
if (Items.OfType<LogicalGateItemViewModelBase>().Any())
|
||||
{
|
||||
logical.OrderNumber = Items.OfType<LogicalGateItemViewModelBase>().OrderByDescending(p => p.OrderNumber).FirstOrDefault().OrderNumber + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
logical.OrderNumber = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
//if (item is BlockDesignerItemViewModel block)
|
||||
//{
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Controls;component/Themes/MahApps.xaml"/>
|
||||
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.DiagramDesigner;component/Themes/Style.xaml" />
|
||||
<ResourceDictionary Source="pack://application:,,,/AIStudio.Wpf.Flowchart;component/Themes/FlowNode.xaml"/>
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Application.Resources>
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user