Странное поведение выбора узлов TreeView

Щелчок по любому из узлов моего TreeView не выбирает его. Мне нужно щелкнуть по небольшой прямоугольной области слева от узла (показано красным на изображении), чтобы выбрать его. Кроме того, выбор узла таким образом означает, что все поддеревье со всеми дочерними узлами будет выбрано сразу. Не уверен, что происходит.

Вот мой XAML:

<treeview itemssource="{Binding FirstGeneration}">
 <treeview.resources> 
 <datatemplate datatype="{x:Type local:AccountNodeVM}">
 <treeviewitem header="{Binding Name}">
 </treeviewitem></datatemplate> 

 <hierarchicaldatatemplate datatype="{x:Type local:CategoryNodeVM}" itemssource="{Binding SubCategories}">
 <treeviewitem header="{Binding Name}" itemssource="{Binding Accounts}">
 </treeviewitem></hierarchicaldatatemplate>
 </treeview.resources>

 <treeview.itemcontainerstyle>
 
 </treeview.itemcontainerstyle>
 </treeview>

FirstGeneration, SubCategories, Accounts определены в моей модели ViewModel. Я попытался использовать TextBlock вместо TreeViewItem в моем HierarchicalDataTemplate но без какой-либо выгоды. Что я здесь делаю неправильно?

1 ответ

Выяснил это. Кажется, что TreeView создает TreeViewItem для каждого узла сам по себе, поэтому при создании HierarchicalDataTemplate вам не нужно вставлять TreeViewItem внутри него, иначе WPF будет обертывать TreeViewItem внутри его собственного TreeViewItem, тем самым запутывая механизм выбора. Просто разместите TextBlock (или, может быть, StackPanel или какой-нибудь другой контейнер, если у вас сложная структура узла) в HierarchicalDataTemplate и пусть WPF выполняет работу по созданию узла. Надеюсь, это помогает кому-то другому.

licensed under cc by-sa 3.0 with attribution.