OnExpanded event for any item in a treeview
c#, data-binding, treeview, wpf
Solution
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));
}
}
Problem
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.