This commit is contained in:
艾竹
2023-06-18 16:21:18 +08:00
parent 0b0f81faac
commit af1cacc846
7 changed files with 176 additions and 218 deletions

View File

@@ -12,14 +12,16 @@ namespace AIStudio.Wpf.DiagramDesigner
{
public class BlockItemsContainerInfo : SelectableViewModelBase
{
public BlockItemsContainerInfo(BlockDesignerItemViewModel dataItem) : this(null, dataItem)
public BlockItemsContainerInfo(BlockDesignerItemViewModel dataItem, bool onlyOneChild, List<string> childFlag) : this(null, dataItem, onlyOneChild, childFlag)
{
}
public BlockItemsContainerInfo(IDiagramViewModel root, BlockDesignerItemViewModel dataItem) : base(root)
public BlockItemsContainerInfo(IDiagramViewModel root, BlockDesignerItemViewModel dataItem, bool onlyOneChild, List<string> childFlag) : base(root)
{
this.Parent = dataItem;
this.OnlyOneChild = onlyOneChild;
this.ChildFlag = childFlag;
}
public BlockItemsContainerInfo(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer)
@@ -65,6 +67,17 @@ namespace AIStudio.Wpf.DiagramDesigner
}
#region
public bool OnlyOneChild
{
get; set;
} = true;
public List<string> ChildFlag
{
get; set;
} = new List<string>();
private double _itemWidth = double.NaN;
public double ItemWidth
{
@@ -147,7 +160,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public List<BlockItemsContainerInfo> ChildrenContain
public List<BlockItemsContainerInfo> ChildrenContainer
{
get
{
@@ -155,7 +168,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
}
public int ContainLevel
public int ContainerLevel
{
get
{
@@ -165,7 +178,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
else
{
return DataItem.ParentContainer.ContainLevel + 1;
return DataItem.ParentContainer.ContainerLevel + 1;
}
}
}
@@ -210,7 +223,7 @@ namespace AIStudio.Wpf.DiagramDesigner
}
public virtual bool CanAttachTo(BlockDesignerItemViewModel item)
=> item != null && item != this.DataItem && !item.IsReadOnly && item.CanContainTo;
=> item != null && item != this.DataItem && !item.IsReadOnly && (this.ChildFlag == null || this.ChildFlag.Count == 0 || this.ChildFlag.Contains(item.Flag));
#endregion
public double GetItemWidth()
@@ -237,7 +250,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public List<BlockItemsContainerInfo> GetAllContain(ObservableCollection<BlockDesignerItemViewModel> children, bool self)
{
List <BlockItemsContainerInfo> itemsContainers= new List <BlockItemsContainerInfo>();
List<BlockItemsContainerInfo> itemsContainers = new List<BlockItemsContainerInfo>();
if (self)
{
itemsContainers.Add(this);