I am working with a Silverlight TreeView. When the control loads, all the nodes are closed. When I click on one of the nodes I need for all the child nodes under that opened parent node to expand. How do I do this? My experience with TreeView is very limited so example code would really help out a lot. Thanks!
1 Answers
0
votes
Attach a handler to each TreeViewItem's Expanded
event. Then, traverse the tree of children, expanding each node as you go.
Simple XAML:
<sdk:TreeView>
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="One"></sdk:TreeViewItem>
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Two">
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Three">
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Four">
<sdk:TreeViewItem Expanded="TreeViewItem_OnExpanded" Header="Five" />
</sdk:TreeViewItem>
</sdk:TreeViewItem>
</sdk:TreeViewItem>
</sdk:TreeView>
Code behind:
private void TreeViewItem_OnExpanded(object sender, RoutedEventArgs e)
{
TreeViewItem tvi = sender as TreeViewItem;
Debug.Assert(tvi != null);
if (tvi.HasItems) { ExpandChildren(tvi); }
}
private void ExpandChildren(TreeViewItem tvi)
{
foreach (var item in tvi.Items)
{
if (item is TreeViewItem) { ExpandChildren(item as TreeViewItem); }
}
tvi.IsExpanded = true;
}
I don't know how to set up an event handler in a TreeView.ItemTemplate, however.
Perhaps another reader knows how to do that ... ?