К сожалению, как я уверен, вы обнаружили, что вы не можете установить свойство treeViewInstance.SelectedItem
только для чтения.
Из памяти каждый TreeViewItem
имеет свойство IsSelected
, которое вы можете установить . Вы пытаетесь прислушиваться к расширению / свертыванию элементов и, возможно, установить это свойство. Не пытаясь сделать это самостоятельно, я не знаю, если это а) хорошее решение б) если бы оно даже работало.
Чтобы получить TreeViewItem
, который является контейнером для элемента в коллекции, используйте
treeViewInstance.ItemContainerGenerator.ContainerFromItem(yourDataItem) as TreeViewItem;
Другая идея (как я бы это сделал) - использовать ListBox / ListView и подделать иерархическое представление. Создайте контроллер модели представления и элемент, оберните свои данные и управляйте всем этим самостоятельно. Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий, и я найду несколько примеров, чтобы помочь.
НТН,
Денис