This commit is contained in:
艾竹
2023-06-18 18:43:48 +08:00
parent af1cacc846
commit b946c2df93
4 changed files with 31 additions and 11 deletions

View File

@@ -19,9 +19,5 @@ namespace AIStudio.Wpf.DiagramDesigner
Connectors.Add(connector);
}
}
[XmlArray]
public List<FullyCreatedConnectorInfoItem> Connectors { get; set; }
}
}

View File

@@ -248,7 +248,7 @@ namespace AIStudio.Wpf.DiagramDesigner
Children.Remove(child);
}
public List<BlockItemsContainerInfo> GetAllContain(ObservableCollection<BlockDesignerItemViewModel> children, bool self)
public List<BlockItemsContainerInfo> GetAllContainers(ObservableCollection<BlockDesignerItemViewModel> children, bool self)
{
List<BlockItemsContainerInfo> itemsContainers = new List<BlockItemsContainerInfo>();
if (self)
@@ -264,7 +264,7 @@ namespace AIStudio.Wpf.DiagramDesigner
foreach (var container in item.Containers)
{
itemsContainers.Add(container);
itemsContainers.AddRange(container.GetAllContain(container.Children, false));
itemsContainers.AddRange(container.GetAllContainers(container.Children, false));
}
}
}

View File

@@ -3221,7 +3221,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (port.GetBounds().IntersectsWith(blockDesignerItemViewModel.GetBounds())) //如果两个位置相交
{
var innerport = port.GetAllContain(port.Children, false).Where(p => p.GetBounds().IntersectsWith(blockDesignerItemViewModel.GetBounds())).OrderByDescending(p => p.ContainerLevel).FirstOrDefault();
var innerport = port.GetAllContainers(port.Children, false).Where(p => p.GetBounds().IntersectsWith(blockDesignerItemViewModel.GetBounds())).OrderByDescending(p => p.ContainerLevel).FirstOrDefault();
if (innerport != null)
{
innerport.DataItem.ShowConnectors = true;
@@ -3356,7 +3356,7 @@ namespace AIStudio.Wpf.DiagramDesigner
{
if (port.GetBounds().IntersectsWith(blockDesignerItemTempLink.GetBounds())) //如果两个位置相交
{
var innerport = port.GetAllContain(port.Children, false).Where(p => p.GetBounds().IntersectsWith(blockDesignerItemTempLink.GetBounds())).OrderByDescending(p => p.ContainerLevel).FirstOrDefault();
var innerport = port.GetAllContainers(port.Children, false).Where(p => p.GetBounds().IntersectsWith(blockDesignerItemTempLink.GetBounds())).OrderByDescending(p => p.ContainerLevel).FirstOrDefault();
if (innerport != null)
{
innerport.DataItem.ShowConnectors = true;
@@ -3403,7 +3403,7 @@ namespace AIStudio.Wpf.DiagramDesigner
public void ClearNearContain()
{
Items.OfType<BlockDesignerItemViewModel>().ToList().SelectMany(n => n.GetAllContain()).Where(p => p.BeAttachTo == true || p.DisableAttachTo == true).ToList()
Items.OfType<BlockDesignerItemViewModel>().ToList().SelectMany(n => n.GetAllContainers()).Where(p => p.BeAttachTo == true || p.DisableAttachTo == true).ToList()
.ForEach(p => {
p.DisableAttachTo = false;
p.BeAttachTo = false;

View File

@@ -245,9 +245,33 @@ namespace AIStudio.Wpf.DiagramDesigner
return next;
}
public List<BlockItemsContainerInfo> GetAllContain()
public void AddContainer(BlockItemsContainerInfo container)
{
return Containers.SelectMany(p => p.GetAllContain(p.Children, true)).ToList();
Containers.Add(container);
RaisePropertyChanged(nameof(FirstContainer));
RaisePropertyChanged(nameof(SecondContainer));
RaisePropertyChanged(nameof(ThirdContainer));
}
public void RemoveContainer(BlockItemsContainerInfo container)
{
Containers.Remove(container);
RaisePropertyChanged(nameof(FirstContainer));
RaisePropertyChanged(nameof(SecondContainer));
RaisePropertyChanged(nameof(ThirdContainer));
}
public void ClearContainers()
{
Containers.Clear();
RaisePropertyChanged(nameof(FirstContainer));
RaisePropertyChanged(nameof(SecondContainer));
RaisePropertyChanged(nameof(ThirdContainer));
}
public List<BlockItemsContainerInfo> GetAllContainers()
{
return Containers.SelectMany(p => p.GetAllContainers(p.Children, true)).ToList();
}
public BlockDesignerItemViewModel GetRootContainItem