点击TreeView
的任何节点都不会选中它。我需要点击节点左侧的一个小矩形区域(图中红色显示)来选择它。此外,以这种方式选择节点意味着将立即选择具有所有子节点的整个子树。不知道发生了什么事。
这是我的XAML:
<TreeView ItemsSource="{Binding FirstGeneration}">
<TreeView.Resources>
<DataTemplate DataType="{x:Type local:AccountNodeVM}">
<TreeViewItem Header ="{Binding Name}" />
</DataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:CategoryNodeVM}" ItemsSource="{Binding SubCategories}">
<TreeViewItem Header="{Binding Name}" ItemsSource="{Binding Accounts}" />
</HierarchicalDataTemplate>
</TreeView.Resources>
<TreeView.ItemContainerStyle>
<Style 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>
</TreeView.ItemContainerStyle>
</TreeView>
FirstGeneration
,SubCategories
,Accounts
都在我的ViewModel中定义。我尝试在我的TextBlock
中使用TreeViewItem
代替HierarchicalDataTemplate
,但没有任何好处。我在这里做错了什么?
答案 0 :(得分:0)
想出来了。 TreeView
似乎为每个节点自己创建TreeViewItem
,因此在创建HierarchicalDataTemplate
时,您不需要在其中嵌入TreeViewItem
,否则WPF将包裹您的{ {1}}在其自己的TreeViewItem
内,从而混淆了选择机制。只需在TreeViewItem
中放置一个TextBlock
(或者StackPanel
或其他一些容器(如果您有复杂的节点结构),让WPF完成节点创建工作。希望这有助于其他人。