From 43b5d82fae8a2bf3775ce2e0512f44302856d80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=89=BE=E7=AB=B9?= Date: Sun, 26 Mar 2023 23:23:34 +0800 Subject: [PATCH] do redo --- .../ViewModels/MainWindowViewModel.cs | 4 +- .../ViewModels/MindViewModel.cs | 14 +- AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml | 11 +- .../ViewModels/Links/LabelsViewModel.cs | 2 +- .../ViewModels/Links/MarkersViewModel.cs | 2 +- .../Links/PathGeneratorsViewModel.cs | 2 +- .../ViewModels/Links/RoutersViewModel.cs | 2 +- .../ViewModels/Links/SnappingViewModel.cs | 2 +- .../ViewModels/Links/VerticesViewModel.cs | 2 +- .../Controls/DragThumb.cs | 34 +- .../Controls/ResizeThumb.cs | 35 +- .../Controls/RotateThumb.cs | 30 +- .../Helpers/DoCommandManager.cs | 18 +- .../DesignerItemViewModelBase.cs | 5 - .../BaseViewModel/DiagramViewModel.cs | 30 +- .../ViewModels/IDiagramViewModel.cs | 4 + .../AIStudio.Wpf.Mind_0bdyaape_wpftmp.csproj | 249 +++++ .../AIStudio.Wpf.Mind_5ymptayx_wpftmp.csproj | 249 +++++ .../AIStudio.Wpf.Mind_rllyqvfb_wpftmp.csproj | 179 ++++ .../Controls/ToolBoxControl.xaml | 35 +- AIStudio.Wpf.Mind/Helpers/DirectoryLayout.cs | 9 +- AIStudio.Wpf.Mind/Helpers/FishBoneLayout.cs | 9 +- AIStudio.Wpf.Mind/Helpers/LogicalLayout.cs | 9 +- AIStudio.Wpf.Mind/Helpers/MindLayout.cs | 9 +- AIStudio.Wpf.Mind/Helpers/MindThemeHelper.cs | 67 +- .../Helpers/OrganizationalLayout.cs | 9 +- .../Models/MindNodeDesignerItem.cs | 4 +- AIStudio.Wpf.Mind/Models/MindNodeModel.cs | 8 +- AIStudio.Wpf.Mind/Themes/MindNode.xaml | 4 +- .../ViewModels/MindDiagramViewModel.cs | 949 ++++++++++++------ AIStudio.Wpf.Mind/ViewModels/MindNode.cs | 224 +++-- 31 files changed, 1692 insertions(+), 518 deletions(-) create mode 100644 AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_0bdyaape_wpftmp.csproj create mode 100644 AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_5ymptayx_wpftmp.csproj create mode 100644 AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_rllyqvfb_wpftmp.csproj diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs index 6e598e9..714e0c7 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/MainWindowViewModel.cs @@ -1166,14 +1166,14 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels //var colors = ColorGallery.GetGradient(ColorGallery.StandardThemeColors[i], 10); //for (var j = 9; j >= 0; j--) //{ - // result.Add(colors[j]); + // result.AddTo(colors[j]); //} } { //var colors = ColorGallery.GetGradient(Colors.Black, 10); //for (var j = 9; j >= 0; j--) //{ - // result.Add(colors[j]); + // result.AddTo(colors[j]); //} } return result.ToArray(); diff --git a/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs b/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs index 88b1df6..d7364cf 100644 --- a/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs +++ b/AIStudio.Wpf.DiagramApp/ViewModels/MindViewModel.cs @@ -103,24 +103,24 @@ namespace AIStudio.Wpf.Flowchart var level1node = MindDiagramViewModel.RootItems.FirstOrDefault(); MindNode level2node1_1 = new MindNode(DiagramViewModel) { Text = "分支主题1" }; - MindDiagramViewModel.AddChildCommand.Execute(new MindNode[] { level1node, level2node1_1 }); + level2node1_1.AddTo(level1node, 0, false); MindNode level2node1_1_1 = new MindNode(DiagramViewModel) { Text = "分支主题1_1" }; - MindDiagramViewModel.AddChildCommand.Execute(new MindNode[] { level2node1_1, level2node1_1_1 }); + level2node1_1_1.AddTo(level2node1_1, 0, false); MindNode level2node1_1_2 = new MindNode(DiagramViewModel) { Text = "分支主题1_2" }; - MindDiagramViewModel.AddChildCommand.Execute(new MindNode[] { level2node1_1, level2node1_1_2 }); ; + level2node1_1_2.AddTo(level2node1_1, 0, false); MindNode level2node1_1_3 = new MindNode(DiagramViewModel) { Text = "分支主题1_3" }; - MindDiagramViewModel.AddChildCommand.Execute(new MindNode[] { level2node1_1, level2node1_1_3 }); + level2node1_1_3.AddTo(level2node1_1, 0, false); MindNode level2node1_2 = new MindNode(DiagramViewModel) { Text = "分支主题2" }; - MindDiagramViewModel.AddChildCommand.Execute(new MindNode[] { level1node, level2node1_2 }); + level2node1_2.AddTo(level1node, 0, false); MindNode level2node1_3 = new MindNode(DiagramViewModel) { Text = "分支主题3" }; - MindDiagramViewModel.AddChildCommand.Execute(new MindNode[] { level1node, level2node1_3 }); + level2node1_3.AddTo(level1node, 0, false); - level1node.LayoutUpdated(); + DiagramViewModel.Init(); } protected override DiagramViewModel GetDiagramViewModel(string name, DiagramType diagramType) diff --git a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml index c87d708..225d59f 100644 --- a/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml +++ b/AIStudio.Wpf.DiagramApp/Views/MainWindow.xaml @@ -1819,6 +1819,11 @@ + + + + + @@ -1867,11 +1872,11 @@ - + - + @@ -1892,7 +1897,7 @@ - + diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/LabelsViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/LabelsViewModel.cs index 9058ecb..58769ab 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/LabelsViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/LabelsViewModel.cs @@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { public LabelsViewModel() { - Title = "Link Labels"; + Title = "Url Labels"; Info = "Labels help you show more information through out a link. You can specify a distance or an offset." + "The content of the labels is still limited because of Blazor's poor SVG support."; diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/MarkersViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/MarkersViewModel.cs index 8cea720..3f0dbad 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/MarkersViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/MarkersViewModel.cs @@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { public MarkersViewModel() { - Title = "Link Markers"; + Title = "Url Markers"; Info = "Markers are SVG Paths that you can put at the beginning or at the end of your links."; DiagramViewModel = new DiagramViewModel(); diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/PathGeneratorsViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/PathGeneratorsViewModel.cs index 2f2530e..01ece75 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/PathGeneratorsViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/PathGeneratorsViewModel.cs @@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { public PathGeneratorsViewModel() { - Title = "Link Path Generators"; + Title = "Url Path Generators"; Info = "Path generators are functions that take as input the calculated route and output SVG paths, " + "alongside the markers positions and their angles. There are currently two generators: Straight and Smooth."; diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/RoutersViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/RoutersViewModel.cs index 04affeb..8afae08 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/RoutersViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/RoutersViewModel.cs @@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { public RoutersViewModel() { - Title = "Link Routers"; + Title = "Url Routers"; Info = "Routers are functions that take as input the link's vertices and can add points in between. " + "There are currently two routers: Normal and Orthogonal."; diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/SnappingViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/SnappingViewModel.cs index 45cea18..4ed1fb1 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/SnappingViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/SnappingViewModel.cs @@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { public SnappingViewModel() { - Title = "Link Snapping"; + Title = "Url Snapping"; Info = "While dragging a new link, it will try to find (and link) to the closest target within a radius."; DiagramViewModel = new DiagramViewModel(); diff --git a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/VerticesViewModel.cs b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/VerticesViewModel.cs index 3591eb8..da1da35 100644 --- a/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/VerticesViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner.Demo/ViewModels/Links/VerticesViewModel.cs @@ -9,7 +9,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Demo.ViewModels { public VerticesViewModel() { - Title = "Link Vertices"; + Title = "Url Vertices"; Info = "Click on a link to create a vertex. Double click on a vertex to delete it. " + "You can drag the vertices around."; diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs index fcf7e1d..3a35833 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/DragThumb.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Windows; using System.Windows.Controls.Primitives; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Geometrys; namespace AIStudio.Wpf.DiagramDesigner.Controls { @@ -16,6 +17,13 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls base.DragCompleted += DragThumb_DragCompleted; } + public IDiagramViewModel DiagramViewModel + { + get + { + return (this.DataContext as SelectableDesignerItemViewModelBase)?.Root; + } + } private List designerItems; private bool drag; @@ -51,11 +59,10 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls designerItems = designerItems.Distinct().ToList(); + DiagramViewModel.DoCommandManager.BeginDo = true; foreach (DesignerItemViewModelBase item in designerItems.OfType()) - { - item.BeginDo = true; - item.SetOldValue(item.Left, nameof(item.Left)); - item.SetOldValue(item.Top, nameof(item.Top)); + { + item.SetOldValue(item.TopLeft, nameof(item.TopLeft)); } e.Handled = true; @@ -75,10 +82,25 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls foreach (DesignerItemViewModelBase item in designerItems.OfType()) { item.SetCellAlignment(); - item.BeginDo = false; - item.RaiseTopLeft(); } + Dictionary> infos = + designerItems.OfType().ToDictionary(p => p, + p => new Tuple(p.GetOldValue< PointBase >(nameof(p.TopLeft)), p.TopLeft)); + DiagramViewModel.DoCommandManager.BeginDo = false; + DiagramViewModel.DoCommandManager.DoNewCommand(this.ToString(), + () => { + foreach (var info in infos) + { + info.Key.TopLeft = info.Value.Item2; + } + }, + () => { + foreach (var info in infos) + { + info.Key.TopLeft = info.Value.Item1; + } + }); e.Handled = true; } } diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs index 9aca585..71affa6 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/ResizeThumb.cs @@ -5,6 +5,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Media; +using AIStudio.Wpf.DiagramDesigner.Geometrys; namespace AIStudio.Wpf.DiagramDesigner.Controls { @@ -17,6 +18,14 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls base.DragCompleted += ResizeThumb_DragCompleted; } + public IDiagramViewModel DiagramViewModel + { + get + { + return (this.DataContext as SelectableDesignerItemViewModelBase)?.Root; + } + } + private List designerItems; IDiagramViewModel diagarmViewModel; @@ -27,11 +36,11 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls if (designerItem != null && designerItem.IsSelected) { designerItems = designerItem.Root.SelectedItems.ToList(); + + DiagramViewModel.DoCommandManager.BeginDo = true; foreach (DesignerItemViewModelBase item in designerItems.OfType()) { - item.BeginDo = true; - item.SetOldValue(item.ItemWidth, nameof(item.ItemWidth)); - item.SetOldValue(item.ItemHeight, nameof(item.ItemHeight)); + item.SetOldValue(item.Size, nameof(item.Size)); } e.Handled = true; @@ -48,10 +57,26 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls { foreach (DesignerItemViewModelBase item in designerItems.OfType()) { - item.BeginDo = false; - item.RaiseItemWidthHeight(); + } + Dictionary> infos = + designerItems.OfType().ToDictionary(p => p, + p => new Tuple(p.GetOldValue(nameof(p.Size)), p.Size)); + DiagramViewModel.DoCommandManager.BeginDo = false; + DiagramViewModel.DoCommandManager.DoNewCommand(this.ToString(), + () => { + foreach (var info in infos) + { + info.Key.Size = info.Value.Item2; + } + }, + () => { + foreach (var info in infos) + { + info.Key.Size = info.Value.Item1; + } + }); e.Handled = true; } } diff --git a/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs b/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs index b0f7f08..452a7d3 100644 --- a/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs +++ b/AIStudio.Wpf.DiagramDesigner/Controls/RotateThumb.cs @@ -24,6 +24,14 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls DragCompleted += RotateThumb_DragCompleted; } + public IDiagramViewModel DiagramViewModel + { + get + { + return (this.DataContext as SelectableDesignerItemViewModelBase)?.Root; + } + } + private List designerItems; private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e) @@ -34,9 +42,9 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls { designerItems = designerItem.Root.SelectedItems.ToList(); + DiagramViewModel.DoCommandManager.BeginDo = true; foreach (DesignerItemViewModelBase item in designerItems.OfType()) { - item.BeginDo = true; item.SetOldValue(this.designerItem.Angle, nameof(this.designerItem.Angle)); } @@ -69,10 +77,26 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls { foreach (DesignerItemViewModelBase item in designerItems.OfType()) { - item.BeginDo = false; - item.RaiseAngle(); + } + Dictionary> infos = + designerItems.OfType().ToDictionary(p => p, + p => new Tuple(p.GetOldValue(nameof(p.Angle)), p.Angle)); + DiagramViewModel.DoCommandManager.BeginDo = false; + DiagramViewModel.DoCommandManager.DoNewCommand(this.ToString(), + () => { + foreach (var info in infos) + { + info.Key.Angle = info.Value.Item2; + } + }, + () => { + foreach (var info in infos) + { + info.Key.Angle = info.Value.Item1; + } + }); e.Handled = true; } } diff --git a/AIStudio.Wpf.DiagramDesigner/Helpers/DoCommandManager.cs b/AIStudio.Wpf.DiagramDesigner/Helpers/DoCommandManager.cs index 3417918..e86d45c 100644 --- a/AIStudio.Wpf.DiagramDesigner/Helpers/DoCommandManager.cs +++ b/AIStudio.Wpf.DiagramDesigner/Helpers/DoCommandManager.cs @@ -53,7 +53,7 @@ namespace AIStudio.Wpf.DiagramDesigner get; private set; } - public int Capacity { get; set; } = 10; + public int Capacity { get; set; } = 100; public DoCommandManager() { @@ -66,10 +66,18 @@ namespace AIStudio.Wpf.DiagramDesigner UnDoActionStack = new Stack(); } + public bool BeginDo + { + get;set; + } + private bool _undoing; public void DoNewCommand(string name, Action action, Action unDoAction, Action clearAction = null, bool doit = true) { - if (_undoing == true) return; + if (BeginDo == true) + return; + if (_undoing == true) + return; try { _undoing = true; @@ -103,7 +111,8 @@ namespace AIStudio.Wpf.DiagramDesigner if (!CanUnDo) return; - if (_undoing == true) return; + if (_undoing == true) + return; try { _undoing = true; @@ -123,7 +132,8 @@ namespace AIStudio.Wpf.DiagramDesigner if (!CanReDo) return; - if (_undoing == true) return; + if (_undoing == true) + return; try { _undoing = true; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs index 09cd7bb..f9665d7 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DesignerItemViewModelBase.cs @@ -553,11 +553,6 @@ namespace AIStudio.Wpf.DiagramDesigner } } - public bool BeginDo - { - get; set; - } - public IObservable WhenConnectorsChanged { get diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index b59cb6c..2d68145 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -319,16 +319,16 @@ namespace AIStudio.Wpf.DiagramDesigner } } - private Size _gridMargin = new Size(28, 28); + private Size _gridMarginSize = new Size(28, 28); public Size GridMarginSize { get { - return _gridMargin; + return _gridMarginSize; } set { - SetProperty(ref _gridMargin, value); + SetProperty(ref _gridMarginSize, value); } } @@ -336,11 +336,11 @@ namespace AIStudio.Wpf.DiagramDesigner { get { - return _gridMargin.Width; + return _gridMarginSize.Width; } set { - _gridMargin.Width = value; + _gridMarginSize.Width = value; RaisePropertyChanged(nameof(GridMarginSize)); } } @@ -349,11 +349,11 @@ namespace AIStudio.Wpf.DiagramDesigner { get { - return _gridMargin.Height; + return _gridMarginSize.Height; } set { - _gridMargin.Height = value; + _gridMarginSize.Height = value; RaisePropertyChanged(nameof(GridMarginSize)); } } @@ -630,7 +630,7 @@ namespace AIStudio.Wpf.DiagramDesigner get; set; } = true; - protected DoCommandManager DoCommandManager = new DoCommandManager(); + public DoCommandManager DoCommandManager { get; private set; } = new DoCommandManager(); public event DiagramEventHandler Event; @@ -1181,7 +1181,7 @@ namespace AIStudio.Wpf.DiagramDesigner RaisePropertyChanged("Items"); } - private void Item_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) + protected virtual void Item_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { RaisePropertyChanged(sender, e.PropertyName); if (e.PropertyName == "IsSelected") @@ -1189,12 +1189,6 @@ namespace AIStudio.Wpf.DiagramDesigner RaisePropertyChanged(nameof(SelectedItem)); } - //连续改变,需要特殊处理,不单独触发属性改变ReDo - if (sender is DesignerItemViewModelBase designer) - { - if (designer.BeginDo) return; - } - var selectable = sender as SelectableViewModelBase; if (e is ValuePropertyChangedEventArgs valuePropertyChangedEventArgs) @@ -1211,6 +1205,8 @@ namespace AIStudio.Wpf.DiagramDesigner } } + + //提供给标尺计算,延迟100ms,等布局改变再计算。 private void OnZoomValueChanged(string obj) { @@ -1392,7 +1388,7 @@ namespace AIStudio.Wpf.DiagramDesigner public void ClearSelectedItems() { - foreach (var item in this.Items.ToList()) + foreach (var item in this.SelectedItems.ToList()) { item.IsSelected = false; } @@ -2356,6 +2352,8 @@ namespace AIStudio.Wpf.DiagramDesigner FitViewModel = new FitViewModel() { BoundingRect = DiagramViewModelHelper.GetBoundingRectangle(selectedItems) }; } + + public void UpdateZIndex() { List ordered = Items.OrderBy(p => p.ZIndex).ToList(); diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs index c16d875..b7c4756 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/IDiagramViewModel.cs @@ -322,6 +322,10 @@ namespace AIStudio.Wpf.DiagramDesigner } #endregion + DoCommandManager DoCommandManager + { + get; + } #region 设置选项 DiagramOption DiagramOption { diff --git a/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_0bdyaape_wpftmp.csproj b/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_0bdyaape_wpftmp.csproj new file mode 100644 index 0000000..1d17de6 --- /dev/null +++ b/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_0bdyaape_wpftmp.csproj @@ -0,0 +1,249 @@ + + + AIStudio.Wpf.Mind + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.Mind\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.Mind + + + + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + A.png + + + 1.0.6 + 一个Wpf的思维导图控件 + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_5ymptayx_wpftmp.csproj b/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_5ymptayx_wpftmp.csproj new file mode 100644 index 0000000..1d17de6 --- /dev/null +++ b/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_5ymptayx_wpftmp.csproj @@ -0,0 +1,249 @@ + + + AIStudio.Wpf.Mind + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.Mind\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.Mind + + + + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + A.png + + + 1.0.6 + 一个Wpf的思维导图控件 + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_rllyqvfb_wpftmp.csproj b/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_rllyqvfb_wpftmp.csproj new file mode 100644 index 0000000..2f3b1f9 --- /dev/null +++ b/AIStudio.Wpf.Mind/AIStudio.Wpf.Mind_rllyqvfb_wpftmp.csproj @@ -0,0 +1,179 @@ + + + AIStudio.Wpf.Mind + obj\Debug\ + obj\ + F:\aistudio.-wpf.-diagram\AIStudio.Wpf.Mind\obj\ + <_TargetAssemblyProjectName>AIStudio.Wpf.Mind + + + + true + AIStudio.Wpf.Controls + akwkevin + https://gitee.com/akwkevin + A.png + + + 1.0.6 + 一个Wpf的思维导图控件 + + + + True + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AIStudio.Wpf.Mind/Controls/ToolBoxControl.xaml b/AIStudio.Wpf.Mind/Controls/ToolBoxControl.xaml index 33ca6e8..315bbc9 100644 --- a/AIStudio.Wpf.Mind/Controls/ToolBoxControl.xaml +++ b/AIStudio.Wpf.Mind/Controls/ToolBoxControl.xaml @@ -34,7 +34,7 @@ - + - + - + - + @@ -107,11 +107,11 @@ - + - + @@ -134,11 +134,11 @@ - + - + @@ -159,13 +159,13 @@ - + - + - + + @@ -425,7 +426,7 @@ - + @@ -454,14 +455,14 @@ - + - + @@ -490,7 +491,7 @@ - + @@ -611,7 +612,7 @@ - + - +