WPF TreeView Control und ExpandAll

WPF TreeView Control und ExpandAll

Das WPF TreeView Control besitzt leider nativ keine ExpandAll Methode. Diese kann jedoch recht einfach manuell nach implementiert werden.
Im folgenden eine mögliche Implementierung.

private void ExpandAll(ItemCollection collection)
{
    foreach (var item in collection)
    {
        TreeViewItem tvi = item as TreeViewItem;
        if (tvi != null)
        {
            tvi.IsExpanded = true;

            if (tvi.Items.Count > 0)
            {
                ExpandAll(tvi.Items);
            }
        }
    }
}

Die Methode erwartet einen Parameter vom Typ ItemCollection. Danach iteriert die Methode über alle Items und versucht diese in ein TreeViewItem zu casten.
Sollte das funktionieren, so wird die Eigenschaft IsExpanded gesetzt. Diese bestimmt, ob das Item aufgeklappt ist.
Zusätzlich wird für jedes Item überprüft, ob dieses ebenfalls Items enthält. Sollte das der Fall sein, so ruft die Methode sich rekursiv erneut auf und klappt auch alle diese Items auf.

Der Vorteil ist, ihr könnt das gesamte Control oder nur Teilbereiche davon aufklappen.


Im folgenden Beispiel wird die ItemCollection des TreeView Control trvMenu übergeben.
Hiermit werden alle enthaltenen TreeViewItems aufgeklappt.

ExpandAll(trvMenu.Items);

Ihr könnt aber auch nur bestimmte Item Bereiche aufklappen. Übergebt dazu einfach die ItemCollection des TreeViewItem.
In diesen Beispiel übergeben wir das TreeViewItem tviArtists und klappen somit alle Items innerhalt dieses Items auf.

ExpandAll(tviArtists.Items);
Um einen Kommentar zu hinterlassen, ist eine Anmeldung erforderlich.