private void SelectItemFromVM(ICompositeItem obj) { if (FindTreeViewItem(TreeViewControl, obj) is TreeViewItem treeViewItem) { treeViewItem.IsSelected = true; } }
//Note: https://stackoverflow.com/a/32628562 private TreeViewItem FindTreeViewItem( ItemsControl itemsControl, ICompositeItem findItem) { //Search for the object model in first level children (recursively) if (itemsControl.ItemContainerGenerator.ContainerFromItem(findItem) is TreeViewItem positiveResult) { return(positiveResult); } //Loop through user object models foreach (var item in itemsControl.Items) { //Get the TreeViewItem associated with the iterated object model if (itemsControl.ItemContainerGenerator.ContainerFromItem(item) is TreeViewItem tviLevel2 && FindTreeViewItem(tviLevel2, findItem) is TreeViewItem positiveResultLevel2) { return(positiveResultLevel2); } } return(null); }