This commit is contained in:
艾竹
2023-03-26 23:23:34 +08:00
parent 90e94a7ec0
commit 43b5d82fae
31 changed files with 1692 additions and 518 deletions

View File

@@ -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<SelectableDesignerItemViewModelBase> 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<DesignerItemViewModelBase>())
{
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<DesignerItemViewModelBase>())
{
item.SetCellAlignment();
item.BeginDo = false;
item.RaiseTopLeft();
}
Dictionary<DesignerItemViewModelBase, Tuple<PointBase, PointBase>> infos =
designerItems.OfType<DesignerItemViewModelBase>().ToDictionary(p => p,
p => new Tuple<PointBase, PointBase>(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;
}
}

View File

@@ -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;
}
}

View File

@@ -24,6 +24,14 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
DragCompleted += RotateThumb_DragCompleted;
}
public IDiagramViewModel DiagramViewModel
{
get
{
return (this.DataContext as SelectableDesignerItemViewModelBase)?.Root;
}
}
private List<SelectableDesignerItemViewModelBase> 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<DesignerItemViewModelBase>())
{
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<DesignerItemViewModelBase>())
{
item.BeginDo = false;
item.RaiseAngle();
}
Dictionary<DesignerItemViewModelBase, Tuple<double, double>> infos =
designerItems.OfType<DesignerItemViewModelBase>().ToDictionary(p => p,
p => new Tuple<double, double>(p.GetOldValue<double>(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;
}
}