mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-04-28 20:23:25 +08:00
把底层再分割一下
This commit is contained in:
@@ -161,7 +161,7 @@ DesignerItems.OfType<DesignerItemBase>()
|
|||||||
[XmlArray]
|
[XmlArray]
|
||||||
public List<ConnectionItem> Connections { get; set; }
|
public List<ConnectionItem> Connections { get; set; }
|
||||||
|
|
||||||
public void AddItems(IEnumerable<SelectableViewModelBase> selectedDesignerItems)
|
public void AddItems(IEnumerable<SelectableDesignerItemViewModelBase> selectedDesignerItems)
|
||||||
{
|
{
|
||||||
var items = selectedDesignerItems.OfType<DesignerItemViewModelBase>().Select(p => p.ToXmlObject());
|
var items = selectedDesignerItems.OfType<DesignerItemViewModelBase>().Select(p => p.ToXmlObject());
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
protected virtual bool AddVerify(SelectableViewModelBase arg)
|
protected virtual bool AddVerify(SelectableDesignerItemViewModelBase arg)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -274,11 +274,6 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint);
|
FullyCreatedConnectorInfo sinkConnectorInfo = GetFullConnectorInfo(connection.Id, sinkItem, sinkConnectorOrientation, connection.SinkXRatio, connection.SinkYRatio, connection.SinkInnerPoint);
|
||||||
|
|
||||||
ConnectorViewModel connectionVM = new ConnectorViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connection);
|
ConnectorViewModel connectionVM = new ConnectorViewModel(viewModel, sourceConnectorInfo, sinkConnectorInfo, connection);
|
||||||
DesignerItemViewModelBase textItem = viewModel.Items.OfType<DesignerItemViewModelBase>().FirstOrDefault(x => x.ParentId == connection.Id);
|
|
||||||
if (textItem != null)
|
|
||||||
{
|
|
||||||
connectionVM.OutTextItem = textItem;
|
|
||||||
}
|
|
||||||
viewModel.Items.Add(connectionVM);
|
viewModel.Items.Add(connectionVM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -402,7 +397,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ItemsToDeleteHasConnector(List<SelectableViewModelBase> itemsToRemove, ConnectorInfoBase connector)
|
private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
|
||||||
{
|
{
|
||||||
if (connector is FullyCreatedConnectorInfo fully)
|
if (connector is FullyCreatedConnectorInfo fully)
|
||||||
{
|
{
|
||||||
@@ -413,7 +408,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region 主题
|
#region 主题
|
||||||
public void SetPropertyValue(SelectableViewModelBase selectable, string propertyName)
|
public void SetPropertyValue(SelectableDesignerItemViewModelBase selectable, string propertyName)
|
||||||
{
|
{
|
||||||
foreach (var item in DiagramViewModel.SelectedItems)
|
foreach (var item in DiagramViewModel.SelectedItems)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ namespace AIStudio.Wpf.Logical
|
|||||||
RaisePropertyChanged("Items");
|
RaisePropertyChanged("Items");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool AddVerify(SelectableViewModelBase arg)
|
protected override bool AddVerify(SelectableDesignerItemViewModelBase arg)
|
||||||
{
|
{
|
||||||
if (base.AddVerify(arg) == false)
|
if (base.AddVerify(arg) == false)
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ namespace AIStudio.Wpf.DiagramApp.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public SelectableViewModelBase SelectedItem
|
public SelectableDesignerItemViewModelBase SelectedItem
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Test.ViewModels
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public SelectableViewModelBase SelectedItem
|
public SelectableDesignerItemViewModelBase SelectedItem
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -227,9 +227,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
Rect rubberBand = new Rect(startPoint.Value, endPoint.Value);
|
Rect rubberBand = new Rect(startPoint.Value, endPoint.Value);
|
||||||
ItemsControl itemsControl = GetParent<ItemsControl>(typeof(ItemsControl), _designerCanvas);
|
ItemsControl itemsControl = GetParent<ItemsControl>(typeof(ItemsControl), _designerCanvas);
|
||||||
|
|
||||||
foreach (SelectableViewModelBase item in vm.Items)
|
foreach (SelectableDesignerItemViewModelBase item in vm.Items)
|
||||||
{
|
{
|
||||||
if (item is SelectableViewModelBase)
|
if (item is SelectableDesignerItemViewModelBase)
|
||||||
{
|
{
|
||||||
DependencyObject container = itemsControl.ItemContainerGenerator.ContainerFromItem(item);
|
DependencyObject container = itemsControl.ItemContainerGenerator.ContainerFromItem(item);
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Text;
|
|
||||||
using System.Windows;
|
|
||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
|
||||||
{
|
|
||||||
public static class ConnectorStyleProps
|
|
||||||
{
|
|
||||||
public static readonly DependencyProperty StyleProperty =
|
|
||||||
DependencyProperty.RegisterAttached("Style", typeof(Style), typeof(ConnectorStyleProps),
|
|
||||||
new FrameworkPropertyMetadata(default(Style)));
|
|
||||||
|
|
||||||
public static Style GetStyle(DependencyObject d)
|
|
||||||
{
|
|
||||||
return (Style)d.GetValue(StyleProperty);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void SetStyle(DependencyObject d, Style value)
|
|
||||||
{
|
|
||||||
d.SetValue(StyleProperty, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -16,7 +16,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
/// BindingWidthAndHeight Dependency Property
|
/// BindingWidthAndHeight Dependency Property
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly DependencyProperty ResizeModeProperty =
|
public static readonly DependencyProperty ResizeModeProperty =
|
||||||
DependencyProperty.Register("ResizeMode", typeof(ResizeMode), typeof(BorderResizeThumb),
|
DependencyProperty.Register(nameof(ResizeMode), typeof(ResizeMode), typeof(BorderResizeThumb),
|
||||||
new FrameworkPropertyMetadata(ResizeMode.Size));
|
new FrameworkPropertyMetadata(ResizeMode.Size));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -37,7 +37,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
/// BindingWidthAndHeight Dependency Property
|
/// BindingWidthAndHeight Dependency Property
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly DependencyProperty ResizeElementProperty =
|
public static readonly DependencyProperty ResizeElementProperty =
|
||||||
DependencyProperty.Register("ResizeElement", typeof(FrameworkElement), typeof(BorderResizeThumb),
|
DependencyProperty.Register(nameof(ResizeElement), typeof(FrameworkElement), typeof(BorderResizeThumb),
|
||||||
new FrameworkPropertyMetadata(null));
|
new FrameworkPropertyMetadata(null));
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
#region GridCellSize
|
#region GridCellSize
|
||||||
|
|
||||||
public static readonly DependencyProperty GridCellSizeProperty =
|
public static readonly DependencyProperty GridCellSizeProperty =
|
||||||
DependencyProperty.Register("GridCellSize",
|
DependencyProperty.Register(nameof(GridCellSize),
|
||||||
typeof(Size),
|
typeof(Size),
|
||||||
typeof(DesignerCanvas),
|
typeof(DesignerCanvas),
|
||||||
new FrameworkPropertyMetadata(new Size(50, 50), FrameworkPropertyMetadataOptions.AffectsRender));
|
new FrameworkPropertyMetadata(new Size(50, 50), FrameworkPropertyMetadataOptions.AffectsRender));
|
||||||
@@ -73,7 +73,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
#region ShowGrid
|
#region ShowGrid
|
||||||
|
|
||||||
public static readonly DependencyProperty ShowGridProperty =
|
public static readonly DependencyProperty ShowGridProperty =
|
||||||
DependencyProperty.Register("ShowGrid",
|
DependencyProperty.Register(nameof(ShowGrid),
|
||||||
typeof(bool),
|
typeof(bool),
|
||||||
typeof(DesignerCanvas),
|
typeof(DesignerCanvas),
|
||||||
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
|
new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
|
||||||
@@ -89,7 +89,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
#region GridColor
|
#region GridColor
|
||||||
|
|
||||||
public static readonly DependencyProperty GridColorProperty =
|
public static readonly DependencyProperty GridColorProperty =
|
||||||
DependencyProperty.Register("GridColor",
|
DependencyProperty.Register(nameof(GridColor),
|
||||||
typeof(Color),
|
typeof(Color),
|
||||||
typeof(DesignerCanvas),
|
typeof(DesignerCanvas),
|
||||||
new FrameworkPropertyMetadata(Colors.LightGray, FrameworkPropertyMetadataOptions.AffectsRender));
|
new FrameworkPropertyMetadata(Colors.LightGray, FrameworkPropertyMetadataOptions.AffectsRender));
|
||||||
@@ -105,7 +105,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
#region GridMargin 单位mm
|
#region GridMargin 单位mm
|
||||||
|
|
||||||
public static readonly DependencyProperty GridMarginProperty =
|
public static readonly DependencyProperty GridMarginProperty =
|
||||||
DependencyProperty.Register("GridMargin",
|
DependencyProperty.Register(nameof(GridMargin),
|
||||||
typeof(double),
|
typeof(double),
|
||||||
typeof(DesignerCanvas),
|
typeof(DesignerCanvas),
|
||||||
new FrameworkPropertyMetadata(28d, FrameworkPropertyMetadataOptions.AffectsRender));
|
new FrameworkPropertyMetadata(28d, FrameworkPropertyMetadataOptions.AffectsRender));
|
||||||
@@ -169,7 +169,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/AIStudio.Wpf.DiagramDesigner;component/Images/FormatPainter.cur", UriKind.RelativeOrAbsolute));
|
StreamResourceInfo sri = Application.GetResourceStream(new Uri("pack://application:,,,/AIStudio.Wpf.DiagramDesigner;component/Images/FormatPainter.cur", UriKind.RelativeOrAbsolute));
|
||||||
this.Cursor = new Cursor(sri.Stream);
|
this.Cursor = new Cursor(sri.Stream);
|
||||||
foreach (SelectableViewModelBase item in _viewModel.Items)
|
foreach (SelectableDesignerItemViewModelBase item in _viewModel.Items)
|
||||||
{
|
{
|
||||||
item.IsHitTestVisible = false;
|
item.IsHitTestVisible = false;
|
||||||
}
|
}
|
||||||
@@ -178,7 +178,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
private void EnterMove()
|
private void EnterMove()
|
||||||
{
|
{
|
||||||
this.Cursor = Cursors.SizeAll;
|
this.Cursor = Cursors.SizeAll;
|
||||||
foreach (SelectableViewModelBase item in _viewModel.Items)
|
foreach (SelectableDesignerItemViewModelBase item in _viewModel.Items)
|
||||||
{
|
{
|
||||||
item.IsHitTestVisible = false;
|
item.IsHitTestVisible = false;
|
||||||
}
|
}
|
||||||
@@ -187,7 +187,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
private void ExitCursor()
|
private void ExitCursor()
|
||||||
{
|
{
|
||||||
this.Cursor = Cursors.Arrow;
|
this.Cursor = Cursors.Arrow;
|
||||||
foreach (SelectableViewModelBase item in _viewModel.Items)
|
foreach (SelectableDesignerItemViewModelBase item in _viewModel.Items)
|
||||||
{
|
{
|
||||||
item.IsHitTestVisible = true;
|
item.IsHitTestVisible = true;
|
||||||
}
|
}
|
||||||
@@ -195,7 +195,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private void Format(SelectableViewModelBase source, SelectableViewModelBase target)
|
private void Format(SelectableDesignerItemViewModelBase source, SelectableDesignerItemViewModelBase target)
|
||||||
{
|
{
|
||||||
CopyHelper.CopyPropertyValue(source.ColorViewModel, target.ColorViewModel);
|
CopyHelper.CopyPropertyValue(source.ColorViewModel, target.ColorViewModel);
|
||||||
CopyHelper.CopyPropertyValue(source.FontViewModel, target.FontViewModel);
|
CopyHelper.CopyPropertyValue(source.FontViewModel, target.FontViewModel);
|
||||||
@@ -253,7 +253,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
if (_service.DrawModeViewModel.CursorMode == CursorMode.Format)
|
if (_service.DrawModeViewModel.CursorMode == CursorMode.Format)
|
||||||
{
|
{
|
||||||
var element = (e.OriginalSource as FrameworkElement);
|
var element = (e.OriginalSource as FrameworkElement);
|
||||||
if (element.DataContext is SelectableViewModelBase target)
|
if (element.DataContext is SelectableDesignerItemViewModelBase target)
|
||||||
{
|
{
|
||||||
Format(_viewModel.SelectedItems.FirstOrDefault(), target);
|
Format(_viewModel.SelectedItems.FirstOrDefault(), target);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -18,16 +18,16 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
base.DragCompleted += DragThumb_DragCompleted;
|
base.DragCompleted += DragThumb_DragCompleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SelectableViewModelBase> designerItems;
|
private List<SelectableDesignerItemViewModelBase> designerItems;
|
||||||
|
|
||||||
private void DragThumb_DragStarted(object sender, DragStartedEventArgs e)
|
private void DragThumb_DragStarted(object sender, DragStartedEventArgs e)
|
||||||
{
|
{
|
||||||
SelectableViewModelBase designerItem = this.DataContext as SelectableViewModelBase;
|
SelectableDesignerItemViewModelBase designerItem = this.DataContext as SelectableDesignerItemViewModelBase;
|
||||||
|
|
||||||
if (designerItem != null && designerItem.IsSelected)
|
if (designerItem != null && designerItem.IsSelected)
|
||||||
{
|
{
|
||||||
// we only move DesignerItems
|
// we only move DesignerItems
|
||||||
designerItems = designerItem.SelectedItems.ToList();
|
designerItems = designerItem.Parent.SelectedItems.ToList();
|
||||||
if (designerItem is ConnectorViewModel connector)
|
if (designerItem is ConnectorViewModel connector)
|
||||||
{
|
{
|
||||||
designerItems.Add(connector.SourceConnectorInfo.DataItem);
|
designerItems.Add(connector.SourceConnectorInfo.DataItem);
|
||||||
@@ -35,15 +35,11 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
{
|
{
|
||||||
designerItems.Add(connector.SinkConnectorInfoFully.DataItem);
|
designerItems.Add(connector.SinkConnectorInfoFully.DataItem);
|
||||||
}
|
}
|
||||||
if (designerItem.OutTextItem != null)
|
|
||||||
{
|
|
||||||
designerItems.Remove(designerItem.OutTextItem);//这个自动计算位置
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (designerItem is PointDesignerItemViewModel)
|
if (designerItem is PointDesignerItemViewModel)
|
||||||
{
|
{
|
||||||
designerItems = new List<SelectableViewModelBase> { designerItem };
|
designerItems = new List<SelectableDesignerItemViewModelBase> { designerItem };
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
|
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
{
|
{
|
||||||
#region SelectedObject
|
#region SelectedObject
|
||||||
|
|
||||||
public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register("SelectedObject", typeof(object), typeof(PropertiesView), new UIPropertyMetadata(null, OnSelectedObjectChanged));
|
public static readonly DependencyProperty SelectedObjectProperty = DependencyProperty.Register(nameof(SelectedObject), typeof(object), typeof(PropertiesView), new UIPropertyMetadata(null, OnSelectedObjectChanged));
|
||||||
public object SelectedObject
|
public object SelectedObject
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
@@ -57,7 +57,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
|
|
||||||
#endregion //SelectedObject
|
#endregion //SelectedObject
|
||||||
|
|
||||||
public static readonly DependencyProperty NeedBrowsableProperty = DependencyProperty.Register("NeedBrowsable", typeof(bool), typeof(PropertiesView), new UIPropertyMetadata(true));
|
public static readonly DependencyProperty NeedBrowsableProperty = DependencyProperty.Register(nameof(NeedBrowsable), typeof(bool), typeof(PropertiesView), new UIPropertyMetadata(true));
|
||||||
public bool NeedBrowsable
|
public bool NeedBrowsable
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
base.DragCompleted += ResizeThumb_DragCompleted;
|
base.DragCompleted += ResizeThumb_DragCompleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SelectableViewModelBase> designerItems;
|
private List<SelectableDesignerItemViewModelBase> designerItems;
|
||||||
IDiagramViewModel diagarmViewModel;
|
IDiagramViewModel diagarmViewModel;
|
||||||
|
|
||||||
private void ResizeThumb_DragStarted(object sender, DragStartedEventArgs e)
|
private void ResizeThumb_DragStarted(object sender, DragStartedEventArgs e)
|
||||||
@@ -26,7 +26,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
diagarmViewModel = designerItem.Parent;
|
diagarmViewModel = designerItem.Parent;
|
||||||
if (designerItem != null && designerItem.IsSelected)
|
if (designerItem != null && designerItem.IsSelected)
|
||||||
{
|
{
|
||||||
designerItems = designerItem.SelectedItems.ToList();
|
designerItems = designerItem.Parent.SelectedItems.ToList();
|
||||||
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
|
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
|
||||||
{
|
{
|
||||||
item.BeginDo = true;
|
item.BeginDo = true;
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
private double initialAngle;
|
private double initialAngle;
|
||||||
private Canvas designerCanvas;
|
private Canvas designerCanvas;
|
||||||
private DesignerItemViewModelBase designerItem;
|
private DesignerItemViewModelBase designerItem;
|
||||||
private RotateTransform rotateTransform;
|
|
||||||
|
|
||||||
public RotateThumb()
|
public RotateThumb()
|
||||||
{
|
{
|
||||||
@@ -25,7 +24,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
DragCompleted += RotateThumb_DragCompleted;
|
DragCompleted += RotateThumb_DragCompleted;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<SelectableViewModelBase> designerItems;
|
private List<SelectableDesignerItemViewModelBase> designerItems;
|
||||||
|
|
||||||
private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e)
|
private void RotateThumb_DragStarted(object sender, DragStartedEventArgs e)
|
||||||
{
|
{
|
||||||
@@ -33,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Controls
|
|||||||
|
|
||||||
if (this.designerItem != null)
|
if (this.designerItem != null)
|
||||||
{
|
{
|
||||||
designerItems = designerItem.SelectedItems.ToList();
|
designerItems = designerItem.Parent.SelectedItems.ToList();
|
||||||
|
|
||||||
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
|
foreach (DesignerItemViewModelBase item in designerItems.OfType<DesignerItemViewModelBase>())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,14 +24,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static readonly DependencyProperty ScrollViewerProperty =
|
public static readonly DependencyProperty ScrollViewerProperty =
|
||||||
DependencyProperty.Register("ScrollViewer", typeof(ScrollViewer), typeof(ZoomBox));
|
DependencyProperty.Register(nameof(ScrollViewer), typeof(ScrollViewer), typeof(ZoomBox));
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region DesignerCanvas
|
#region DesignerCanvas
|
||||||
|
|
||||||
|
|
||||||
public static readonly DependencyProperty DesignerCanvasProperty =
|
public static readonly DependencyProperty DesignerCanvasProperty =
|
||||||
DependencyProperty.Register("DesignerCanvas", typeof(DesignerCanvas), typeof(ZoomBox),
|
DependencyProperty.Register(nameof(DesignerCanvas), typeof(DesignerCanvas), typeof(ZoomBox),
|
||||||
new FrameworkPropertyMetadata(null,
|
new FrameworkPropertyMetadata(null,
|
||||||
new PropertyChangedCallback(OnDesignerCanvasChanged)));
|
new PropertyChangedCallback(OnDesignerCanvasChanged)));
|
||||||
|
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
/// Identifies the <see cref="CommandParameter" /> dependency property
|
/// Identifies the <see cref="CommandParameter" /> dependency property
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
|
||||||
"CommandParameter", typeof(object), typeof(ControlMouseDoubleClickCommandBehavior),
|
nameof(CommandParameter), typeof(object), typeof(ControlMouseDoubleClickCommandBehavior),
|
||||||
new PropertyMetadata(null,
|
new PropertyMetadata(null,
|
||||||
(s, e) =>
|
(s, e) =>
|
||||||
{
|
{
|
||||||
@@ -165,7 +165,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
/// Identifies the <see cref="Command" /> dependency property
|
/// Identifies the <see cref="Command" /> dependency property
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
|
||||||
"Command", typeof(ICommand), typeof(ControlMouseDoubleClickCommandBehavior),
|
nameof(Command), typeof(ICommand), typeof(ControlMouseDoubleClickCommandBehavior),
|
||||||
new PropertyMetadata(null,
|
new PropertyMetadata(null,
|
||||||
(s, e) => OnCommandChanged(s as ControlMouseDoubleClickCommandBehavior, e)));
|
(s, e) => OnCommandChanged(s as ControlMouseDoubleClickCommandBehavior, e)));
|
||||||
|
|
||||||
|
|||||||
@@ -125,7 +125,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
/// Identifies the <see cref="CommandParameter" /> dependency property
|
/// Identifies the <see cref="CommandParameter" /> dependency property
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty CommandParameterProperty = DependencyProperty.Register(
|
||||||
"CommandParameter", typeof(object), typeof(ControlMouseLeftButtonDownCommandBehavior),
|
nameof(CommandParameter), typeof(object), typeof(ControlMouseLeftButtonDownCommandBehavior),
|
||||||
new PropertyMetadata(null,
|
new PropertyMetadata(null,
|
||||||
(s, e) =>
|
(s, e) =>
|
||||||
{
|
{
|
||||||
@@ -162,7 +162,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
/// Identifies the <see cref="Command" /> dependency property
|
/// Identifies the <see cref="Command" /> dependency property
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
|
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
|
||||||
"Command", typeof(ICommand), typeof(ControlMouseLeftButtonDownCommandBehavior),
|
nameof(Command), typeof(ICommand), typeof(ControlMouseLeftButtonDownCommandBehavior),
|
||||||
new PropertyMetadata(null,
|
new PropertyMetadata(null,
|
||||||
(s, e) => OnCommandChanged(s as ControlMouseLeftButtonDownCommandBehavior, e)));
|
(s, e) => OnCommandChanged(s as ControlMouseLeftButtonDownCommandBehavior, e)));
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner.Helpers
|
|||||||
return serializer.Deserialize(sr) as T;
|
return serializer.Deserialize(sr) as T;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
// FontItem = CopyHelper.Mapper<FontItem, IFontViewModel>(fontViewModel);
|
// FontItem = CopyHelper.Mapper<FontItem, IFontViewModel>(fontViewModel);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
public SelectableDesignerItemBase(SelectableViewModelBase viewmodel)
|
public SelectableDesignerItemBase(SelectableDesignerItemViewModelBase viewmodel)
|
||||||
{
|
{
|
||||||
this.Id = viewmodel.Id;
|
this.Id = viewmodel.Id;
|
||||||
this.ZIndex = viewmodel.ZIndex;
|
this.ZIndex = viewmodel.ZIndex;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
IDrawModeViewModel DrawModeViewModel { get; }
|
IDrawModeViewModel DrawModeViewModel { get; }
|
||||||
IQuickThemeViewModel QuickThemeViewModel { get; }
|
IQuickThemeViewModel QuickThemeViewModel { get; }
|
||||||
ILockObjectViewModel LockObjectViewModel { get; }
|
ILockObjectViewModel LockObjectViewModel { get; }
|
||||||
SelectableViewModelBase SelectedItem { get; set; }
|
SelectableDesignerItemViewModelBase SelectedItem { get; set; }
|
||||||
IColorViewModel CopyDefaultColorViewModel();
|
IColorViewModel CopyDefaultColorViewModel();
|
||||||
IFontViewModel CopyDefaultFontViewModel();
|
IFontViewModel CopyDefaultFontViewModel();
|
||||||
}
|
}
|
||||||
@@ -132,8 +132,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private SelectableViewModelBase _selectedItem;
|
private SelectableDesignerItemViewModelBase _selectedItem;
|
||||||
public SelectableViewModelBase SelectedItem
|
public SelectableDesignerItemViewModelBase SelectedItem
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ using SvgPathProperties;
|
|||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
{
|
{
|
||||||
public class ConnectorViewModel : SelectableViewModelBase
|
public class ConnectorViewModel : SelectableDesignerItemViewModelBase
|
||||||
{
|
{
|
||||||
public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode)
|
public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
|||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
{
|
{
|
||||||
public abstract class DesignerItemViewModelBase : SelectableViewModelBase
|
public abstract class DesignerItemViewModelBase : SelectableDesignerItemViewModelBase
|
||||||
{
|
{
|
||||||
public DesignerItemViewModelBase() : base()
|
public DesignerItemViewModelBase() : base()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -452,7 +452,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
if (e.OldItems != null)
|
if (e.OldItems != null)
|
||||||
{
|
{
|
||||||
foreach (var item in e.OldItems.OfType<SelectableViewModelBase>())
|
foreach (var item in e.OldItems.OfType<SelectableDesignerItemViewModelBase>())
|
||||||
{
|
{
|
||||||
item.PropertyChanged -= Item_PropertyChanged;
|
item.PropertyChanged -= Item_PropertyChanged;
|
||||||
item.Dispose();
|
item.Dispose();
|
||||||
@@ -460,7 +460,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
if (e.NewItems != null)
|
if (e.NewItems != null)
|
||||||
{
|
{
|
||||||
foreach (var item in e.NewItems.OfType<SelectableViewModelBase>())
|
foreach (var item in e.NewItems.OfType<SelectableDesignerItemViewModelBase>())
|
||||||
{
|
{
|
||||||
item.PropertyChanged += Item_PropertyChanged;
|
item.PropertyChanged += Item_PropertyChanged;
|
||||||
}
|
}
|
||||||
@@ -675,9 +675,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public ObservableCollection<SelectableViewModelBase> Items { get; set; } = new ObservableCollection<SelectableViewModelBase>();
|
public ObservableCollection<SelectableDesignerItemViewModelBase> Items { get; set; } = new ObservableCollection<SelectableDesignerItemViewModelBase>();
|
||||||
|
|
||||||
public List<SelectableViewModelBase> SelectedItems
|
public List<SelectableDesignerItemViewModelBase> SelectedItems
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -698,13 +698,13 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Func<SelectableViewModelBase, bool> OutAddVerify
|
public Func<SelectableDesignerItemViewModelBase, bool> OutAddVerify
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public bool AddVerify(SelectableViewModelBase item)
|
public bool AddVerify(SelectableDesignerItemViewModelBase item)
|
||||||
{
|
{
|
||||||
if (item.InitData() == false)
|
if (item.InitData() == false)
|
||||||
return false;
|
return false;
|
||||||
@@ -722,14 +722,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
private void ExecuteDirectAddItemCommand(object parameter)
|
private void ExecuteDirectAddItemCommand(object parameter)
|
||||||
{
|
{
|
||||||
if (parameter is SelectableViewModelBase ite)
|
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||||
{
|
{
|
||||||
if (AddVerify(ite) != true) return;
|
if (AddVerify(ite) != true) return;
|
||||||
|
|
||||||
ClearSelectedItems();
|
ClearSelectedItems();
|
||||||
Add(ite);
|
Add(ite);
|
||||||
}
|
}
|
||||||
else if (parameter is List<SelectableViewModelBase> items)
|
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||||
{
|
{
|
||||||
if (items.Select(p => AddVerify(p)).Any() != true) return;
|
if (items.Select(p => AddVerify(p)).Any() != true) return;
|
||||||
|
|
||||||
@@ -741,7 +741,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Add(SelectableViewModelBase item)
|
private void Add(SelectableDesignerItemViewModelBase item)
|
||||||
{
|
{
|
||||||
item.Parent = this;
|
item.Parent = this;
|
||||||
item.ZIndex = Items.Count;
|
item.ZIndex = Items.Count;
|
||||||
@@ -768,7 +768,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
private void ExecuteAddItemCommand(object parameter)
|
private void ExecuteAddItemCommand(object parameter)
|
||||||
{
|
{
|
||||||
if (parameter is SelectableViewModelBase ite)
|
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||||
{
|
{
|
||||||
if (AddVerify(ite) != true) return;
|
if (AddVerify(ite) != true) return;
|
||||||
|
|
||||||
@@ -781,7 +781,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
Items.Remove(ite);
|
Items.Remove(ite);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (parameter is List<SelectableViewModelBase> items)
|
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||||
{
|
{
|
||||||
if (items.Select(p => AddVerify(p)).Any() != true) return;
|
if (items.Select(p => AddVerify(p)).Any() != true) return;
|
||||||
|
|
||||||
@@ -801,47 +801,34 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
private void ExecuteDirectRemoveItemCommand(object parameter)
|
private void ExecuteDirectRemoveItemCommand(object parameter)
|
||||||
{
|
{
|
||||||
if (parameter is SelectableViewModelBase ite)
|
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||||
{
|
{
|
||||||
ite.IsSelected = false;
|
ite.IsSelected = false;
|
||||||
Items.Remove(ite);
|
Items.Remove(ite);
|
||||||
if (ite.OutTextItem != null)
|
|
||||||
{
|
|
||||||
Items.Remove(ite.OutTextItem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (parameter is List<SelectableViewModelBase> items)
|
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||||
{
|
{
|
||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
item.IsSelected = false;
|
item.IsSelected = false;
|
||||||
Items.Remove(item);
|
Items.Remove(item);
|
||||||
if (item.OutTextItem != null)
|
|
||||||
{
|
|
||||||
Items.Remove(item.OutTextItem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void ExecuteRemoveItemCommand(object parameter)
|
private void ExecuteRemoveItemCommand(object parameter)
|
||||||
{
|
{
|
||||||
if (parameter is SelectableViewModelBase ite)
|
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||||
{
|
{
|
||||||
DoCommandManager.DoNewCommand(this.ToString(),
|
DoCommandManager.DoNewCommand(this.ToString(),
|
||||||
() => {
|
() => {
|
||||||
ite.IsSelected = false;
|
ite.IsSelected = false;
|
||||||
Items.Remove(ite);
|
Items.Remove(ite);
|
||||||
if (ite.OutTextItem != null)
|
|
||||||
{
|
|
||||||
Items.Remove(ite.OutTextItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
},
|
||||||
() => {
|
() => {
|
||||||
Items.Add(ite);
|
Items.Add(ite);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (parameter is List<SelectableViewModelBase> items)
|
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||||
{
|
{
|
||||||
DoCommandManager.DoNewCommand(this.ToString(),
|
DoCommandManager.DoNewCommand(this.ToString(),
|
||||||
() => {
|
() => {
|
||||||
@@ -849,10 +836,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
item.IsSelected = false;
|
item.IsSelected = false;
|
||||||
Items.Remove(item);
|
Items.Remove(item);
|
||||||
if (item.OutTextItem != null)
|
|
||||||
{
|
|
||||||
Items.Remove(item.OutTextItem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
@@ -860,10 +843,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
foreach (var item in items)
|
foreach (var item in items)
|
||||||
{
|
{
|
||||||
Items.Add(item);
|
Items.Add(item);
|
||||||
if (item.OutTextItem != null)
|
|
||||||
{
|
|
||||||
Items.Add(item.OutTextItem);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
@@ -1078,9 +1057,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
private void ExecuteBringForwardCommand(object parameter)
|
private void ExecuteBringForwardCommand(object parameter)
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||||
|
|
||||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||||
var guid = Guid.NewGuid();
|
var guid = Guid.NewGuid();
|
||||||
|
|
||||||
DoCommandManager.DoNewCommand(this.ToString(),
|
DoCommandManager.DoNewCommand(this.ToString(),
|
||||||
@@ -1097,7 +1076,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
item.ZIndex = newIndex;
|
item.ZIndex = newIndex;
|
||||||
changeditems.Add(item);
|
changeditems.Add(item);
|
||||||
|
|
||||||
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
||||||
|
|
||||||
foreach (var elm in it)
|
foreach (var elm in it)
|
||||||
{
|
{
|
||||||
@@ -1127,10 +1106,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
private void ExecuteBringToFrontCommand(object parameter)
|
private void ExecuteBringToFrontCommand(object parameter)
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||||
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
||||||
|
|
||||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||||
var guid = Guid.NewGuid();
|
var guid = Guid.NewGuid();
|
||||||
|
|
||||||
DoCommandManager.DoNewCommand(this.ToString(),
|
DoCommandManager.DoNewCommand(this.ToString(),
|
||||||
@@ -1138,7 +1117,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
int i = childrenSorted.Count - 1;
|
int i = childrenSorted.Count - 1;
|
||||||
int j = childrenSorted.Count - selectionSorted.Count - 1;
|
int j = childrenSorted.Count - selectionSorted.Count - 1;
|
||||||
|
|
||||||
foreach (SelectableViewModelBase item in childrenSorted)
|
foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
|
||||||
{
|
{
|
||||||
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
||||||
if (selectionSorted.Contains(item))
|
if (selectionSorted.Contains(item))
|
||||||
@@ -1167,10 +1146,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
private void ExecuteSendBackwardCommand(object parameter)
|
private void ExecuteSendBackwardCommand(object parameter)
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
|
||||||
int count = this.Items.Count;
|
int count = this.Items.Count;
|
||||||
|
|
||||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||||
var guid = Guid.NewGuid();
|
var guid = Guid.NewGuid();
|
||||||
|
|
||||||
DoCommandManager.DoNewCommand(this.ToString(),
|
DoCommandManager.DoNewCommand(this.ToString(),
|
||||||
@@ -1185,7 +1164,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
||||||
item.ZIndex = newIndex;
|
item.ZIndex = newIndex;
|
||||||
changeditems.Add(item);
|
changeditems.Add(item);
|
||||||
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
||||||
|
|
||||||
foreach (var elm in it)
|
foreach (var elm in it)
|
||||||
{
|
{
|
||||||
@@ -1216,10 +1195,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
private void ExecuteSendToBackCommand(object parameter)
|
private void ExecuteSendToBackCommand(object parameter)
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||||
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
||||||
|
|
||||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||||
var guid = Guid.NewGuid();
|
var guid = Guid.NewGuid();
|
||||||
|
|
||||||
DoCommandManager.DoNewCommand(this.ToString(),
|
DoCommandManager.DoNewCommand(this.ToString(),
|
||||||
@@ -1227,7 +1206,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
int i = childrenSorted.Count - 1;
|
int i = childrenSorted.Count - 1;
|
||||||
int j = selectionSorted.Count - 1;
|
int j = selectionSorted.Count - 1;
|
||||||
|
|
||||||
foreach (SelectableViewModelBase item in childrenSorted)
|
foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
|
||||||
{
|
{
|
||||||
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
||||||
if (selectionSorted.Contains(item))
|
if (selectionSorted.Contains(item))
|
||||||
@@ -1406,16 +1385,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//连线上的文本
|
|
||||||
foreach (var selectedConnection in selectedConnections)
|
|
||||||
{
|
|
||||||
if (selectedConnection.OutTextItem != null)
|
|
||||||
{
|
|
||||||
selectedDesignerItems.Add(selectedConnection.OutTextItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string json = new SerializableObject
|
string json = new SerializableObject
|
||||||
{
|
{
|
||||||
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializabObject()).Where(p => p != null).ToList(),
|
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializabObject()).Where(p => p != null).ToList(),
|
||||||
@@ -1438,7 +1407,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
return;
|
return;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> items = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> items = new List<SelectableDesignerItemViewModelBase>();
|
||||||
SerializableObject copyitem = JsonConvert.DeserializeObject<SerializableObject>(clipboardData);
|
SerializableObject copyitem = JsonConvert.DeserializeObject<SerializableObject>(clipboardData);
|
||||||
|
|
||||||
|
|
||||||
@@ -1469,7 +1438,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
OffsetX += 10;
|
OffsetX += 10;
|
||||||
OffsetY += 10;
|
OffsetY += 10;
|
||||||
|
|
||||||
List<SelectableViewModelBase> connectors = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> connectors = new List<SelectableDesignerItemViewModelBase>();
|
||||||
foreach (var connection in copyitem.Connections)
|
foreach (var connection in copyitem.Connections)
|
||||||
{
|
{
|
||||||
var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.ObjectJson);
|
var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.ObjectJson);
|
||||||
@@ -1491,12 +1460,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
ConnectorViewModel connectionVM = new ConnectorViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem);
|
ConnectorViewModel connectionVM = new ConnectorViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem);
|
||||||
connectors.Add(connectionVM);
|
connectors.Add(connectionVM);
|
||||||
|
|
||||||
DesignerItemViewModelBase textItem = items.OfType<DesignerItemViewModelBase>().FirstOrDefault(x => x.ParentId == connectionItem.Id);
|
|
||||||
if (textItem != null)
|
|
||||||
{
|
|
||||||
connectionVM.OutTextItem = textItem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DirectAddItemCommand.Execute(connectors);
|
DirectAddItemCommand.Execute(connectors);
|
||||||
@@ -1550,7 +1513,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool ItemsToDeleteHasConnector(List<SelectableViewModelBase> itemsToRemove, ConnectorInfoBase connector)
|
private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
|
||||||
{
|
{
|
||||||
if (connector is FullyCreatedConnectorInfo fully)
|
if (connector is FullyCreatedConnectorInfo fully)
|
||||||
{
|
{
|
||||||
@@ -1571,8 +1534,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
private void ExecuteDeleteCommand(object parameter)
|
private void ExecuteDeleteCommand(object parameter)
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableViewModelBase>().ToList();
|
List<SelectableDesignerItemViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableDesignerItemViewModelBase>().ToList();
|
||||||
List<SelectableViewModelBase> connectionsToAlsoRemove = new List<SelectableViewModelBase>();
|
List<SelectableDesignerItemViewModelBase> connectionsToAlsoRemove = new List<SelectableDesignerItemViewModelBase>();
|
||||||
|
|
||||||
foreach (var connector in Items.OfType<ConnectorViewModel>())
|
foreach (var connector in Items.OfType<ConnectorViewModel>())
|
||||||
{
|
{
|
||||||
@@ -1744,7 +1707,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
public void UpdateZIndex()
|
public void UpdateZIndex()
|
||||||
{
|
{
|
||||||
List<SelectableViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
|
List<SelectableDesignerItemViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
|
||||||
|
|
||||||
|
|
||||||
for (int i = 0; i < ordered.Count; i++)
|
for (int i = 0; i < ordered.Count; i++)
|
||||||
|
|||||||
@@ -0,0 +1,165 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using System.Windows.Media;
|
||||||
|
using AIStudio.Wpf.DiagramDesigner.Models;
|
||||||
|
using Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
|
{
|
||||||
|
|
||||||
|
public interface ISelectItems
|
||||||
|
{
|
||||||
|
SimpleCommand SelectItemCommand
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public abstract class SelectableDesignerItemViewModelBase : SelectableViewModelBase, ISelectItems, ISelectable, IGroupable
|
||||||
|
{
|
||||||
|
|
||||||
|
public SelectableDesignerItemViewModelBase():base()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, SelectableDesignerItemBase designer):base(parent, designer)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, string json) : base(parent, json)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Init()
|
||||||
|
{
|
||||||
|
base.Init();
|
||||||
|
|
||||||
|
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
|
||||||
|
EditCommand = new SimpleCommand(ExecuteEditCommand);
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool InitData()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public virtual bool EditData()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SimpleCommand SelectItemCommand
|
||||||
|
{
|
||||||
|
get; private set;
|
||||||
|
}
|
||||||
|
public ICommand EditCommand
|
||||||
|
{
|
||||||
|
get; private set;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string _text;
|
||||||
|
[Browsable(true)]
|
||||||
|
[CanDo]
|
||||||
|
public override string Text
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var text = _text;
|
||||||
|
if (FontViewModel.FontCase == FontCase.Upper)
|
||||||
|
{
|
||||||
|
return text?.ToUpper();
|
||||||
|
}
|
||||||
|
else if (FontViewModel.FontCase == FontCase.Lower)
|
||||||
|
{
|
||||||
|
return text?.ToLower();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (SetProperty(ref _text, value))
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(_text))
|
||||||
|
{
|
||||||
|
ShowText = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _isReadOnlyText = false;
|
||||||
|
public bool IsReadOnlyText
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (IsReadOnly)
|
||||||
|
return true;
|
||||||
|
return _isReadOnlyText;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetProperty(ref _isReadOnlyText, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _showText;
|
||||||
|
public virtual bool ShowText
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return _showText;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetProperty(ref _showText, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExecuteSelectItemCommand(object param)
|
||||||
|
{
|
||||||
|
SelectItem((bool)param, !IsSelected);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SelectItem(bool newselect, bool select)
|
||||||
|
{
|
||||||
|
if (newselect)
|
||||||
|
{
|
||||||
|
foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList())
|
||||||
|
{
|
||||||
|
designerItemViewModelBase._isSelected = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IsSelected = select;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void AddToSelection(bool selected)
|
||||||
|
{
|
||||||
|
foreach (SelectableDesignerItemViewModelBase item in Parent.SelectedItems.ToList())
|
||||||
|
item.IsSelected = false;
|
||||||
|
|
||||||
|
Parent.SelectedItems.Clear();
|
||||||
|
if (selected == true)
|
||||||
|
{
|
||||||
|
Parent.SelectionService.AddToSelection(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void ExecuteEditCommand(object param)
|
||||||
|
{
|
||||||
|
if (IsReadOnly == true) return;
|
||||||
|
|
||||||
|
ShowText = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -10,19 +10,9 @@ using Newtonsoft.Json;
|
|||||||
|
|
||||||
namespace AIStudio.Wpf.DiagramDesigner
|
namespace AIStudio.Wpf.DiagramDesigner
|
||||||
{
|
{
|
||||||
|
public abstract class SelectableViewModelBase : BindableBase, ISelectable
|
||||||
public interface ISelectItems
|
|
||||||
{
|
{
|
||||||
SimpleCommand SelectItemCommand
|
protected IDiagramServiceProvider _service
|
||||||
{
|
|
||||||
get;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public abstract class SelectableViewModelBase : BindableBase, ISelectItems, ISelectable, IGroupable
|
|
||||||
{
|
|
||||||
private IDiagramServiceProvider _service
|
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -80,8 +70,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
FontViewModel = _service.CopyDefaultFontViewModel();
|
FontViewModel = _service.CopyDefaultFontViewModel();
|
||||||
|
|
||||||
LockObjectViewModel = new LockObjectViewModel();
|
LockObjectViewModel = new LockObjectViewModel();
|
||||||
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
|
|
||||||
EditCommand = new SimpleCommand(ExecuteEditCommand);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
|
protected virtual void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
|
||||||
@@ -98,36 +86,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
FontViewModel = CopyHelper.Mapper<FontViewModel, FontItem>(designerbase.FontItem);
|
FontViewModel = CopyHelper.Mapper<FontViewModel, FontItem>(designerbase.FontItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool InitData()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
public virtual bool EditData()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<SelectableViewModelBase> SelectedItems
|
|
||||||
{
|
|
||||||
//todo
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return Parent.SelectedItems;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public IDiagramViewModel Parent
|
public IDiagramViewModel Parent
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
public SimpleCommand SelectItemCommand
|
|
||||||
{
|
|
||||||
get; private set;
|
|
||||||
}
|
|
||||||
public ICommand EditCommand
|
|
||||||
{
|
|
||||||
get; private set;
|
|
||||||
}
|
|
||||||
public Guid Id
|
public Guid Id
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
@@ -145,19 +107,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
SetProperty(ref _parentId, value);
|
SetProperty(ref _parentId, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public SelectableViewModelBase ParentItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsGroup
|
public bool IsGroup
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _isSelected;
|
protected bool _isSelected;
|
||||||
[Browsable(false)]
|
[Browsable(false)]
|
||||||
public bool IsSelected
|
public virtual bool IsSelected
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -165,24 +123,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (SetProperty(ref _isSelected, value))
|
SetProperty(ref _isSelected, value);
|
||||||
{
|
|
||||||
//如果没有文字,失去焦点自动清除
|
|
||||||
if (_isSelected == false && string.IsNullOrEmpty(Text))
|
|
||||||
{
|
|
||||||
ShowText = false;
|
|
||||||
if (this is TextDesignerItemViewModel)
|
|
||||||
{
|
|
||||||
if (ParentItem != null)
|
|
||||||
{
|
|
||||||
ParentItem.OutTextItem = null;
|
|
||||||
}
|
|
||||||
Parent.DirectRemoveItemCommand.Execute(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,19 +212,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private string _text;
|
private string _text;
|
||||||
[Browsable(true)]
|
[Browsable(true)]
|
||||||
[CanDo]
|
[CanDo]
|
||||||
public string Text
|
public virtual string Text
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
var text = _text;
|
var text = _text;
|
||||||
if (OutTextItem != null)
|
|
||||||
{
|
|
||||||
text = OutTextItem._text;
|
|
||||||
}
|
|
||||||
if (FontViewModel.FontCase == FontCase.Upper)
|
if (FontViewModel.FontCase == FontCase.Upper)
|
||||||
{
|
{
|
||||||
return text?.ToUpper();
|
return text?.ToUpper();
|
||||||
@@ -299,81 +235,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (OutTextItem != null)
|
if (SetProperty(ref _text, value))
|
||||||
{
|
{
|
||||||
OutTextItem.Text = value;
|
|
||||||
}
|
|
||||||
else if (SetProperty(ref _text, value))
|
|
||||||
{
|
|
||||||
if (!string.IsNullOrEmpty(_text))
|
|
||||||
{
|
|
||||||
ShowText = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _isReadOnlyText = false;
|
|
||||||
public bool IsReadOnlyText
|
public virtual void AddToSelection(bool selected)
|
||||||
{
|
{
|
||||||
get
|
|
||||||
{
|
|
||||||
if (IsReadOnly)
|
|
||||||
return true;
|
|
||||||
return _isReadOnlyText;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
SetProperty(ref _isReadOnlyText, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private bool _showText;
|
|
||||||
public virtual bool ShowText
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return _showText;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
SetProperty(ref _showText, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public DesignerItemViewModelBase OutTextItem
|
|
||||||
{
|
|
||||||
get; set;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void ExecuteSelectItemCommand(object param)
|
|
||||||
{
|
|
||||||
SelectItem((bool)param, !IsSelected);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SelectItem(bool newselect, bool select)
|
|
||||||
{
|
|
||||||
if (newselect)
|
|
||||||
{
|
|
||||||
foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList())
|
|
||||||
{
|
|
||||||
designerItemViewModelBase._isSelected = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
IsSelected = select;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddToSelection(bool selected)
|
|
||||||
{
|
|
||||||
foreach (SelectableViewModelBase item in Parent.SelectedItems.ToList())
|
|
||||||
item.IsSelected = false;
|
|
||||||
|
|
||||||
Parent.SelectedItems.Clear();
|
|
||||||
if (selected == true)
|
|
||||||
{
|
|
||||||
Parent.SelectionService.AddToSelection(this);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
private void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||||
@@ -384,13 +256,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void ExecuteEditCommand(object param)
|
|
||||||
{
|
|
||||||
if (IsReadOnly == true) return;
|
|
||||||
|
|
||||||
ShowText = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void Dispose()
|
public virtual void Dispose()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
List<SelectableViewModelBase> SelectedItems
|
List<SelectableDesignerItemViewModelBase> SelectedItems
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
ObservableCollection<SelectableViewModelBase> Items
|
ObservableCollection<SelectableDesignerItemViewModelBase> Items
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
@@ -183,7 +183,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
get;
|
get;
|
||||||
}
|
}
|
||||||
|
|
||||||
Func<SelectableViewModelBase, bool> OutAddVerify
|
Func<SelectableDesignerItemViewModelBase, bool> OutAddVerify
|
||||||
{
|
{
|
||||||
get; set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
{
|
{
|
||||||
public class GifImageItemViewModel : DesignerItemViewModelBase
|
public class GifImageItemViewModel : DesignerItemViewModelBase
|
||||||
{
|
{
|
||||||
private IDisposable propertyChangedSubscription;
|
//private IDisposable propertyChangedSubscription;
|
||||||
private IDisposable connectorsChangedSubscription;
|
//private IDisposable connectorsChangedSubscription;
|
||||||
|
|
||||||
|
|
||||||
public SimpleCommand AddItemCommand { get; private set; }
|
public SimpleCommand AddItemCommand { get; private set; }
|
||||||
@@ -54,7 +54,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
|
|
||||||
ClearConnectors();
|
ClearConnectors();
|
||||||
//propertyChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == "Left" || o.ToString() == "Top" || o.ToString() == "ItemWidth" || o.ToString() == "ItemHeight").Subscribe(ChangeImageElement);
|
//propertyChangedSubscription = WhenPropertyChanged.Where(o => o.ToString() == "Left" || o.ToString() == "Top" || o.ToString() == "ItemWidth" || o.ToString() == "ItemHeight").Subscribe(ChangeImageElement);
|
||||||
connectorsChangedSubscription = WhenConnectorsChanged.Subscribe(OnConnectorsChanged);
|
//connectorsChangedSubscription = WhenConnectorsChanged.Subscribe(OnConnectorsChanged);
|
||||||
|
|
||||||
BuildMenuOptions();
|
BuildMenuOptions();
|
||||||
}
|
}
|
||||||
@@ -127,33 +127,33 @@ namespace AIStudio.Wpf.DiagramDesigner
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnConnectorsChanged(NotifyCollectionChangedEventArgs args)
|
//private void OnConnectorsChanged(NotifyCollectionChangedEventArgs args)
|
||||||
{
|
//{
|
||||||
if (args.Action == NotifyCollectionChangedAction.Add)
|
// if (args.Action == NotifyCollectionChangedAction.Add)
|
||||||
{
|
// {
|
||||||
if (args.NewItems.Count > 0)
|
// if (args.NewItems.Count > 0)
|
||||||
{
|
// {
|
||||||
foreach (var item in args.NewItems)
|
// foreach (var item in args.NewItems)
|
||||||
{
|
// {
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
else if (args.Action == NotifyCollectionChangedAction.Remove)
|
// else if (args.Action == NotifyCollectionChangedAction.Remove)
|
||||||
{
|
// {
|
||||||
if (args.OldItems.Count > 0)
|
// if (args.OldItems.Count > 0)
|
||||||
{
|
// {
|
||||||
foreach (var item in args.OldItems)
|
// foreach (var item in args.OldItems)
|
||||||
{
|
// {
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
else if (args.Action == NotifyCollectionChangedAction.Reset)
|
// else if (args.Action == NotifyCollectionChangedAction.Reset)
|
||||||
{
|
// {
|
||||||
|
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user