2009-09-07 2 views
13

Ich möchte ein Ereignis für eine beliebige Erweiterung eines TreeViewitem in meiner Strukturansicht abrufen.OnExpanded Ereignis für ein Element in einer Strukturansicht

Der Grund dafür, ein wenig unabhängig von der ursprünglichen Frage: Ich erstelle eine Struktur, die eng mit einer XML-Baumstruktur in Beziehung steht, aber ich erlaube ein Include-Element in der XML, so dass die Struktur über mehrere Dateien gehen kann . Ich möchte die itemsource -Eigenschaft von Treeviewitems in meiner Treeview bei der Erweiterung festlegen.

Antwort

27

Sie können das TreeViewItem.Expanded Ereignis als fügtes Ereignis:

<TreeView TreeViewItem.Expanded="TreeViewItem_Expanded" 
      ItemsSource="{Binding}"> 
    ... 
</TreeView/> 

In Code-behind, können Sie die TreeViewItem identifizieren, die das Ereignis mit der OriginalSource Eigenschaft initiiert:

private void TreeViewItem_Expanded(object sender, RoutedEventArgs e) 
    { 
     TreeViewItem tvi = e.OriginalSource as TreeViewItem; 
     if (tvi != null) 
     { 
      MessageBox.Show(string.Format("TreeNode '{0}' was expanded", tvi.Header)); 
     } 
    } 
+0

wenn Sie meinen die visuellen Nachkommen, können Sie sie durch die ItemsContainerGenerator des TreeViewItem –

+0

Das war so hilfreich, ich danke Ihnen, ich wünschte, ein Kopfgeld hätte Ihnen zu geben. Abschließende Zusammenfassung: Die visuellen Nachkommen, die ich wollte, wurden während des erweiterten Ereignisses noch nicht erstellt. In dem Erweiterungsereignis habe ich die OriginalSource gespeichert, dann habe ich in einer beliebigen Konvertermethode für eine Bindung den visuellen Abkömmling mit ItemContainerGenerator.ContainerFromIndex (i) erhalten und die ItemsSource aktualisiert. –

Verwandte Themen