Ich möchte ein FrameworkElement aus der visuellen Struktur entfernen. Da die Framework eine Parent-Eigenschaft hat, wäre es offensichtlich, dieses Problem zu lösen, indem es von dort zu entfernen:Entfernen eines Elements aus dem visuellen Baum auf eine allgemeine Weise
FrameworkElement childElement;
if(childElement != null && childElement.Parent != null) // In the visual tree
{
// This line will, of course not complie:
// childElement.Parent.RemoveFromChildren(childElement);
}
Das Problem ist, dass die Parent-Eigenschaft von Framework DependencyObject ist, die keine Ahnung von Kindern haben. Das einzige, was kann ich über dieses Problem sehe gehen ist die Mutter über Gießen zu sehen, ob es eine Grenze ist, Tafel usw. (Elemente, die Idee der Kinder haben), und entfernen Sie es von dort:
FrameworkElement childElement;
if(childElement != null && childElement.Parent != null) // In the visual tree
{
if(childElement.Parent is Panel)
{
(childElement.Parent as Panel).Children.Remove(childElement);
}
if(childElement.Parent is Border)
{
(childElement.Parent as Border).Child = null;
}
}
Offensichtlich ist dies nicht eine sehr flexible Lösung und überhaupt nicht generisch. Kann jemand einen allgemeineren Ansatz zum Entfernen eines Elements aus dem visuellen Baum vorschlagen?
Schade, es gibt keine allgemeinen Schnittstellen für Gegenstände mit Kindern. Danke für die Liste, ich habe nicht an ContentControl oder ItemsControl gedacht ... jetzt reicht das! –
@Gergely: Ich stieß auf einen Artikel auf MSDN über Inhaltsmodell in WPF. Ich denke, dass dies für Sie nützlich sein könnte. http://msdn.microsoft.com/library/bb613548.aspx – decyclone