У меня проблема с Treeview, которая сводит меня с ума !!!
Мой TreeView привязан к объектной модели глубиной 3 уровня и использует HierarchicalDataTemplate для определения того, что должно отображаться для каждого уровня:
Компания
+ Ветвп
- + - Контакт
Я хочу сделать конкретный контакт для выбранного узла, что я делаю так (контакт - это объект из объектной модели с привязкой к данным):
Dim companyTreeViewItem As TreeViewItem = Me.AgentTreeView.ItemContainerGenerator.ContainerFromItem(contact.Branch.Company)
Dim branchTreeViewItem As TreeViewItem = companyTreeViewItem.ItemContainerGenerator.ContainerFromItem(contact.Branch)
Dim contactTreeViewItem As TreeViewItem = branchTreeViewItem.ItemContainerGenerator.ContainerFromItem(contact)
Если я разверну древовидное представление, чтобы узел, который должен быть выбран, был виден (а затем пошел и выбрал что-то еще), этот код работал, однако, если я запустил его, прежде чем развернуть какие-либо узлы, branchTreeViewItem вернется как Nothing (null) .
Любые идеи, как я могу получить TreeViewItem для моего контактного объекта и установить его в качестве выбранного?
EDIT
Код, который заполняет древовидное представление, просто устанавливает DataContext элемента управления:
Me.DataContext = New ObjectModel.ObservableCollection(Of DAL.Company)(From c In entities.Companies.Include("Branches").Include("Branches.Contacts") Order By c.CompanyName)
В этом случае дерево имеет простую привязку
<TreeView ItemsSource="{Binding}" VirtualizingStackPanel.IsVirtualizing="False" >