How to programmatically select an item in a WPF TreeView? How to programmatically select an item in a WPF TreeView? wpf wpf

How to programmatically select an item in a WPF TreeView?


For those who are still looking for the right solution to this problem here is the one below. I found this one in the comments to the Code Project article “WPF TreeView Selection” http://www.codeproject.com/KB/WPF/TreeView_SelectionWPF.aspx by DaWanderer.It was posted by Kenrae on Nov 25 2008. This worked great for me. Thanks Kenrae!

Here is his post:

Instead of walking the tree, have your own data object have the IsSelected property (and I recommend the IsExpanded property too). Define a style for the TreeViewItems of the tree using the ItemContainerStyle property on the TreeView that binds those properties from the TreeViewItem to your data objects. Something like this:

<Style x:Key="LibraryTreeViewItemStyle"               TargetType="{x:Type TreeViewItem}">            <Setter Property="IsExpanded"                        Value="{Binding IsExpanded, Mode=TwoWay}" />            <Setter Property="IsSelected"                        Value="{Binding IsSelected, Mode=TwoWay}" />            <Setter Property="FontWeight"                        Value="Normal" />            <Style.Triggers>                  <Trigger Property="IsSelected"                              Value="True">                        <Setter Property="FontWeight"                                    Value="Bold" />                  </Trigger>            </Style.Triggers>      </Style><TreeView ItemsSource="{Binding Path=YourCollection}"               ItemContainerStyle="{StaticResource LibraryTreeViewItemStyle}"               ItemTemplate={StaticResource YourHierarchicalDataTemplate}/>


It's a real pain for some strange reason, you have to use ContainerFromItem to get the container, then invoke the select method.

//  selectedItemObject is not a TreeViewItem, but an item from the collection that //  populated the TreeView.var tvi = treeView.ItemContainerGenerator.ContainerFromItem(selectedItemObject)           as TreeViewItem;if (tvi != null){    tvi.IsSelected = true;}

There once was a blog entry on how to do it here, but the link is dead now.


You need to get the TreeViewItem and then set IsSelected to true.