diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs index c7622ba..3237804 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/ImageDesignerItem.cs @@ -19,9 +19,5 @@ namespace AIStudio.Wpf.DiagramDesigner Connectors.Add(connector); } } - - [XmlArray] - public List Connectors { get; set; } - } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs index c4f005c..7fd1698 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Container/BlockItemsContainerInfo.cs @@ -248,7 +248,7 @@ namespace AIStudio.Wpf.DiagramDesigner Children.Remove(child); } - public List GetAllContain(ObservableCollection children, bool self) + public List GetAllContainers(ObservableCollection children, bool self) { List itemsContainers = new List(); 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)); } } } diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs index fda8b50..f38ab81 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/DiagramViewModel.cs @@ -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().ToList().SelectMany(n => n.GetAllContain()).Where(p => p.BeAttachTo == true || p.DisableAttachTo == true).ToList() + Items.OfType().ToList().SelectMany(n => n.GetAllContainers()).Where(p => p.BeAttachTo == true || p.DisableAttachTo == true).ToList() .ForEach(p => { p.DisableAttachTo = false; p.BeAttachTo = false; diff --git a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/BlockDesignerItemViewModel.cs b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/BlockDesignerItemViewModel.cs index 66fe7fc..2199bae 100644 --- a/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/BlockDesignerItemViewModel.cs +++ b/AIStudio.Wpf.DiagramDesigner/ViewModels/DefaultViewModel/BlockDesignerItemViewModel.cs @@ -245,9 +245,33 @@ namespace AIStudio.Wpf.DiagramDesigner return next; } - public List 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 GetAllContainers() + { + return Containers.SelectMany(p => p.GetAllContainers(p.Children, true)).ToList(); } public BlockDesignerItemViewModel GetRootContainItem