Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OnExpanded event for any item in a treeview

Tags:

I'd like to get an event for any expansion of a treeviewitem in my treeview.

The reason for this, a bit unrelated to the original question: I am creating a tree that relates closely to an xml file tree, but I am allowing an include element in the xml so the tree can go across multiple files. I'd like to set the itemssource property of treeviewitems within my treeview upon expansion.

like image 249
Ian Kelling Avatar asked Sep 07 '09 07:09

Ian Kelling


1 Answers

You can use the TreeViewItem.Expanded event as an attached event :

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

In code-behind, you can identify the TreeViewItem that initiated the event using the OriginalSource property :

    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));
        }
    }
like image 157
Thomas Levesque Avatar answered Oct 20 '22 17:10

Thomas Levesque