mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-04 08:06:36 +08:00
do redo
This commit is contained in:
@@ -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<SelectableDesignerItemViewModelBase> 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<DesignerItemViewModelBase>())
|
||||
{
|
||||
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<DesignerItemViewModelBase>())
|
||||
{
|
||||
item.BeginDo = false;
|
||||
item.RaiseItemWidthHeight();
|
||||
|
||||
}
|
||||
|
||||
Dictionary<DesignerItemViewModelBase, Tuple<SizeBase, SizeBase>> infos =
|
||||
designerItems.OfType<DesignerItemViewModelBase>().ToDictionary(p => p,
|
||||
p => new Tuple<SizeBase, SizeBase>(p.GetOldValue<SizeBase>(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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user