大部分完成,还有写要解决的问题

This commit is contained in:
艾竹
2023-01-26 22:25:48 +08:00
parent 04db0ef13b
commit 64ea56f01e
38 changed files with 499 additions and 56 deletions

View File

@@ -28,5 +28,15 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
get; set;
}
public int Index
{
get; set;
}
public int ParentIndex
{
get; set;
}
}
}

View File

@@ -36,6 +36,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
ConnectionViewModel connector2 = new ConnectionViewModel(node2.BottomConnector, node3.BottomConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}

View File

@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
class ThickLinkViewModel : BaseViewModel
{
public ThickLinkViewModel()
{
Title = "Custom link";
Info = "Creating your own custom links is very easy!";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector1.ColorViewModel.LineWidth = 6;
connector1.ColorViewModel.LineColor.BrushType = BrushType.LinearGradientBrush;
connector1.ColorViewModel.LineColor.GradientStop = new ObservableCollection<GradientStop>();
connector1.ColorViewModel.LineColor.GradientStop.Add(new GradientStop(System.Windows.Media.Colors.Red, 0));
connector1.ColorViewModel.LineColor.GradientStop.Add(new GradientStop(System.Windows.Media.Colors.Gray, 1));
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
connector2.ColorViewModel.LineWidth = 6;
connector2.ColorViewModel.LineColor.Color = System.Windows.Media.Colors.Blue;
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
class GroupingViewModel : BaseViewModel
{
public GroupingViewModel()
{
Title = "Simple";
Info = "A simple example of AIStudio.Wpf.DiagramDesigner.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 300, Top = 300, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.GroupCommand.Execute(new List<DesignerItemViewModelBase> { node1, node2 });
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -61,6 +61,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
connector1.AddLabel("(0,-20)", 50, new Point(0, -20));
connector1.AddLabel("(0,20)", -50, new Point(0, 20));
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -78,6 +78,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
connector1.AddLabel("Custom");
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -35,6 +35,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector2.AddLabel("Smooth");
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -35,6 +35,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
connector2.AddLabel("Orthogonal");
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -17,7 +17,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DiagramViewModel.EnableSnapping = true;
DiagramViewModel.DrawModeViewModel = new DrawModeViewModel() { EnableSnapping = true };
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
@@ -27,6 +27,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 300, Top = 50, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
class VerticesViewModel : BaseViewModel
{
public VerticesViewModel()
{
Title = "Link Vertices";
Info = "Click on a link to create a vertex. Double click on a vertex to delete it. " +
"You can drag the vertices around.";
_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 80, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
DefaultDesignerItemViewModel node2 = new DefaultDesignerItemViewModel() { Left = 200, Top = 350, Text = "2" };
DiagramViewModel.DirectAddItemCommand.Execute(node2);
DefaultDesignerItemViewModel node3 = new DefaultDesignerItemViewModel() { Left = 400, Top = 100, Text = "3" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.LeftConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterNormal);
connector1.AddLabel("Content");
connector1.AddVertex(new Point(221, 112.5));
connector1.AddVertex(new Point(111, 291));
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.LeftConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
connector2.AddLabel("Content");
connector2.AddVertex(new Point(400, 324));
connector2.AddVertex(new Point(326, 180));
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -48,6 +48,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
connector2.IsReadOnly = true;
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using AIStudio.Wpf.DiagramDesigner.Additionals.Extensions.ViewModels;
namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
{
class SvgViewModel : BaseViewModel
{
public SvgViewModel()
{
Title = "Custom node";
Info = "Creating your own custom design is very easy!";
//_service.ColorViewModel.FillColor.Color = System.Windows.Media.Colors.Orange;
DiagramViewModel = new DiagramViewModel();
DiagramViewModel.CellHorizontalAlignment = CellHorizontalAlignment.Center;
DiagramViewModel.CellVerticalAlignment = CellVerticalAlignment.Center;
DiagramViewModel.PageSizeType = PageSizeType.Custom;
DiagramViewModel.PageSize = new Size(double.NaN, double.NaN);
DefaultDesignerItemViewModel node1 = new DefaultDesignerItemViewModel() { Left = 50, Top = 50, Text = "1" };
DiagramViewModel.DirectAddItemCommand.Execute(node1);
PathItemViewModel node2 = new PathItemViewModel() { Left = 300, Top = 300, Icon = "M 0 -50 L 50 -50 L 50 -10 A 1 1 0 0 0 50 10 L 50 50 L 0 50 L 0 10 A 1 1 0 0 0 0 -10 Z" };
DiagramViewModel.DirectAddItemCommand.Execute(node2);
PathItemViewModel node3 = new PathItemViewModel() { Left = 300, Top = 50, Icon = "M 0 -50 L 50 -50 L 50 -10 A 1 1 0 0 0 50 10 L 50 50 L 0 50 L 0 10 A 1 1 0 0 0 0 -10 Z" };
DiagramViewModel.DirectAddItemCommand.Execute(node3);
ConnectionViewModel connector1 = new ConnectionViewModel(node1.RightConnector, node2.TopConnector, DrawMode.ConnectingLineSmooth, RouterMode.RouterNormal);
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
ConnectionViewModel connector2 = new ConnectionViewModel(node2.BottomConnector, node3.BottomConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -31,6 +31,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DiagramViewModel.DirectAddItemCommand.Execute(connector1);
}
}
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -35,6 +35,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
ReconnectLinksCommand = new SimpleCommand(ReconnectLinks);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
public SimpleCommand ReconnectLinksCommand

View File

@@ -32,6 +32,8 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -35,6 +35,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}

View File

@@ -33,6 +33,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels
ConnectionViewModel connector2 = new ConnectionViewModel(node2.RightConnector, node3.RightConnector, DrawMode.ConnectingLineStraight, RouterMode.RouterOrthogonal);
DiagramViewModel.DirectAddItemCommand.Execute(connector2);
DiagramViewModel.ClearSelectedItemsCommand.Execute(null);
}
}
}