Trennen eines Elements von einem beliebigen / nicht angegebenen übergeordneten Container in WPF
Habe ich eine Kontrolle, der ein Kind von einem anderen Steuerelement (wie alle nicht-root-Steuerungen/Elemente in WPF).
Wenn ich mich bewegen will, die Kontrolle an einen anderen container, ich habe zu trennen aus seiner aktuellen container-ersten (andernfalls wird eine exception geworfen wird).
Wenn ich weiß, was der Vater ist, dann kann ich nur entfernen Sie es aus seiner Kinder-Kollektion, die Inhalte oder was auch immer. Aber was ist, wenn ich nicht weiß, was das übergeordnete container-Typ ist - wie Entferne ich das Kind kontrollieren?
Im code-Beispiel unten: Wie würde ich in der Lage sein, sich zu bewegen "sp1", um einen anderen Behälter, ohne zu wissen, den Typ des übergeordneten (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."
Idealerweise würde ich nur gerne etwas schreiben wie:
sp1.Parent.RemoveChild(sp1);
Aber ich habe nicht gefunden was so.
InformationsquelleAutor der Frage Björn | 2013-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben Sie eine helper-Klasse mit einer extension Methode:
InformationsquelleAutor der Antwort Clemens
NEU:
Schlage ich vor, die Basisklassen verwenden, anstatt alle anderen aufgelisteten. Versuchen, diesen code, diese 3 Klassen sind die meisten use-cases für Ihre Bedürfnisse. So wie ich das verstehe, es ist fast die gleiche wie die Vorherige ^)
ALT:
Soweit ich mich erinnere, die Sie verwenden können, Visuelle geben Sie als Elternteil geben und versuchen, zu nennen RemoveVisualChild Methode.
InformationsquelleAutor der Antwort Lonli-Lokli