demo提交

This commit is contained in:
艾竹
2023-01-25 23:55:30 +08:00
parent b857151bdc
commit f11a4170d8
49 changed files with 1220 additions and 184 deletions

View File

@@ -23,6 +23,11 @@ namespace AIStudio.Wpf.DiagramDesigner
Init(sourceConnectorInfo, sinkConnectorInfo);
}
public ConnectionViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode = DrawMode.ConnectingLineSmooth, RouterMode routerMode = AIStudio.Wpf.DiagramDesigner.RouterMode.RouterNormal) : this(null, sourceConnectorInfo, sinkConnectorInfo, drawMode, routerMode)
{
}
public ConnectionViewModel(IDiagramViewModel root, FullyCreatedConnectorInfo sourceConnectorInfo, FullyCreatedConnectorInfo sinkConnectorInfo, ConnectionItem designer) : base(root, designer)
{
PathMode = designer.PathMode;
@@ -31,11 +36,6 @@ namespace AIStudio.Wpf.DiagramDesigner
Init(sourceConnectorInfo, sinkConnectorInfo);
}
public ConnectionViewModel(FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode) : this(null, sourceConnectorInfo, sinkConnectorInfo, drawMode, routerMode)
{
}
public override SelectableItemBase GetSerializableObject()
{
if (IsFullConnection)
@@ -56,7 +56,7 @@ namespace AIStudio.Wpf.DiagramDesigner
if (Root != null && Root.ColorViewModel != null)
{
this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel);
this.ColorViewModel = CopyHelper.Mapper(Root.ColorViewModel);
}
this.ColorViewModel.FillColor.Color = Colors.Red;
if (sinkConnectorInfo is FullyCreatedConnectorInfo sink && sink.DataItem.ShowArrow == false)
@@ -74,9 +74,9 @@ namespace AIStudio.Wpf.DiagramDesigner
this.SourceConnectorInfo = sourceConnectorInfo;
this.SinkConnectorInfo = sinkConnectorInfo;
DeleteConnectionCommand = new SimpleCommand(DeleteConnection);
AddVertexCommand = new SimpleCommand(AddVertex);
AddLabelCommand = new SimpleCommand(AddLabel);
DeleteConnectionCommand = new SimpleCommand(Command_Enable, DeleteConnection);
AddVertexCommand = new SimpleCommand(Command_Enable, AddVertex);
AddLabelCommand = new SimpleCommand(Command_Enable, AddLabel);
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
@@ -88,7 +88,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Vertices = new ObservableCollection<ConnectorVertexModel>(designer.Vertices.Select(p => new ConnectorVertexModel(this.Root, this, designer)));
Labels = new ObservableCollection<ConnectorLabelModel>(designer.Labels.Select(p => new ConnectorLabelModel(this.Root, this, designer)));
}
}
}
#region
private string _text;
@@ -300,7 +300,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
private LineAnimation _lineAnimation = LineAnimation.None;
[Browsable(true)]
[CanDo]

View File

@@ -35,7 +35,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
base.Init();
DeleteLabelCommand = new SimpleCommand(DeleteLabel);
DeleteLabelCommand = new SimpleCommand(Command_Enable, DeleteLabel);
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)

View File

@@ -32,7 +32,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
base.Init();
DeleteVertexCommand = new SimpleCommand(DeleteVertex);
DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex);
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)

View File

@@ -50,8 +50,8 @@ namespace AIStudio.Wpf.DiagramDesigner
base.Init();
menuOptions = new List<CinchMenuItem>();
MenuItemCommand = new SimpleCommand(ExecuteMenuItemCommand);
DeleteCommand = new SimpleCommand(ExecuteDeleteCommand);
MenuItemCommand = new SimpleCommand(Command_Enable, ExecuteMenuItemCommand);
DeleteCommand = new SimpleCommand(Command_Enable, ExecuteDeleteCommand);
}

View File

@@ -68,22 +68,66 @@ namespace AIStudio.Wpf.DiagramDesigner
#region
public FullyCreatedConnectorInfo TopConnector
{
get { return (connectors != null && connectors.Count >= 1) ? connectors[0] : null; }
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.Top);
}
}
public FullyCreatedConnectorInfo BottomConnector
{
get { return (connectors != null && connectors.Count >= 2) ? connectors[1] : null; }
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.Bottom);
}
}
public FullyCreatedConnectorInfo LeftConnector
{
get { return (connectors != null && connectors.Count >= 3) ? connectors[2] : null; }
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.Left);
}
}
public FullyCreatedConnectorInfo RightConnector
{
get { return (connectors != null && connectors.Count >= 4) ? connectors[3] : null; }
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.Right);
}
}
public FullyCreatedConnectorInfo TopLeftConnector
{
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.TopLeft);
}
}
public FullyCreatedConnectorInfo TopRightConnector
{
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.TopRight);
}
}
public FullyCreatedConnectorInfo BottomLeftConnector
{
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.BottomLeft);
}
}
public FullyCreatedConnectorInfo BottomRightConnector
{
get
{
return connectors?.FirstOrDefault(p => p.Orientation == ConnectorOrientation.BottomRight);
}
}
public Style ConnectorStyle
@@ -244,7 +288,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
[CanDo]
[CanDo]
public PointBase TopLeft
{
get
@@ -317,13 +361,28 @@ namespace AIStudio.Wpf.DiagramDesigner
/// <summary>
/// 连接点是否可以按偏移自定义
/// </summary>
public bool IsInnerConnector { get; set; }
public bool IsInnerConnector
{
get; set;
}
private ObservableCollection<FullyCreatedConnectorInfo> connectors = new ObservableCollection<FullyCreatedConnectorInfo>();
public IEnumerable<FullyCreatedConnectorInfo> Connectors { get { return connectors; } }
protected ObservableCollection<FullyCreatedConnectorInfo> connectors = new ObservableCollection<FullyCreatedConnectorInfo>();
public IEnumerable<FullyCreatedConnectorInfo> Connectors
{
get
{
return connectors;
}
}
protected ObservableCollection<CinchMenuItem> menuOptions;
public IEnumerable<CinchMenuItem> MenuOptions { get { return menuOptions; } }
public IEnumerable<CinchMenuItem> MenuOptions
{
get
{
return menuOptions;
}
}
public bool ShowMenuOptions
{
@@ -336,7 +395,10 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public bool BeginDo { get; set; }
public bool BeginDo
{
get; set;
}
public IObservable<NotifyCollectionChangedEventArgs> WhenConnectorsChanged
{
@@ -415,7 +477,7 @@ namespace AIStudio.Wpf.DiagramDesigner
this.Top = (int)(this.Top / Root.GridCellSize.Height) * Root.GridCellSize.Height + Root.GridMarginSize.Height + (Root.GridCellSize.Height - this.ItemHeight);
}
}
}
}
}
public void RaiseTopLeft()
@@ -443,7 +505,7 @@ namespace AIStudio.Wpf.DiagramDesigner
var rightPort = RightConnector;
var bottomPort = BottomConnector;
var left = leftPort == null ? Position.X: Math.Min(Position.X, leftPort.Position.X);
var left = leftPort == null ? Position.X : Math.Min(Position.X, leftPort.Position.X);
var top = topPort == null ? Position.Y : Math.Min(Position.Y, topPort.Position.Y);
var right = rightPort == null ? Position.X + ItemWidth :
Math.Max(rightPort.Position.X + rightPort.ConnectorWidth, Position.X + ItemWidth);

View File

@@ -42,8 +42,13 @@ namespace AIStudio.Wpf.DiagramDesigner
{
base.Init();
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
EditCommand = new SimpleCommand(ExecuteEditCommand);
SelectItemCommand = new SimpleCommand(Command_Enable, ExecuteSelectItemCommand);
EditCommand = new SimpleCommand(Command_Enable, ExecuteEditCommand);
}
protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(root, designerbase);
}
public virtual bool InitData()
@@ -62,7 +67,29 @@ namespace AIStudio.Wpf.DiagramDesigner
public ICommand EditCommand
{
get; private set;
}
}
private bool _isSelected;
[Browsable(false)]
public override bool IsSelected
{
get
{
return _isSelected;
}
set
{
if (SetProperty(ref _isSelected, value))
{
//如果没有文字,失去焦点自动清除
if (_isSelected == false && string.IsNullOrEmpty(Text))
{
ShowText = false;
}
}
}
}
private string _text;
[Browsable(true)]

View File

@@ -261,6 +261,11 @@ namespace AIStudio.Wpf.DiagramDesigner
}
protected bool Command_Enable(object para)
{
return IsReadOnly == false;
}
private void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == "FontCase")