У меня есть элемент управления, который является дочерним элементом другого элемента управления (так как все элементы управления/элементы управления без полномочий root находятся в WPF). Если я хочу переместить элемент управления в другой контейнер, я должен сначала отключить его от его текущего контейнера (иначе будет выбрано исключение).
Если я знаю, что такое родитель, я могу просто удалить его из своей коллекции Children или Content или что-то еще. Но что, если я не знаю, какой тип родительского контейнера - как удалить дочерний элемент управления?
В примере кода ниже: Как я могу переместить "sp1" в другой контейнер, не зная тип родителя (Panel, GroupBox...)?
// Add the child object "sp1" to a container (of any type).
StackPanel sp1 = new StackPanel();
SomeParentControl.Children.Add(sp1);
// Somewhere else in the code. I still have a reference to "sp1" but now I don't know what container it is in. I just want to move the "sp1" object to another parent container.
AnotherParentControl.Content = sp1; // Generates exception: "Must disconnect specified child from current parent Visual before attaching to new parent Visual."
В идеале я просто хотел бы написать что-то вроде:
sp1.Parent.RemoveChild(sp1);
Но я не нашел ничего подобного.