我可以在TreeViewItem中自动包装HierarchicalDataTemplate项吗?

时间:2009-02-27 15:14:53

标签: c# .net wpf data-binding treeview

我有一个4级树结构,定义如下:

<HierarchicalDataTemplate DataType="{x:Type src:Level1}" ItemsSource="{Binding Path=Level2Items}">
    <TextBlock Text="{Binding Path=Level1Name}"/>
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type src:Level2}" ItemsSource="{Binding Path=Level3Items}">
    <TextBlock Text="{Binding Path=Level2Name}"/>
</HierarchicalDataTemplate>

<HierarchicalDataTemplate DataType="{x:Type src:Level3}" ItemsSource="{Binding Path=Level4Items}">
    <TextBlock Text="{Binding Path=Level3Name}"/>
</HierarchicalDataTemplate>
<DataTemplate DataType="{x:Type src:Level4}">
    <TextBlock Text="{Binding Path=Level4Name}"/>
</DataTemplate>

它很棒。唯一的问题是,我无法以编程方式选择任何绑定项,因为它们不是TreeViewItem类型(因此没有“IsSelected”属性)。有没有办法自动将数据绑定项包装在特定的容器类型中(在这种情况下:TreeViewItem)?

1 个答案:

答案 0 :(得分:3)

如果您的商品位于TreeView,则TreeViewItem的{​​{1}}会自动将它们包裹在TreeView中。您可以执行以下操作以确保ItemContainerGenerator上的IsSelected属性映射到数据类的属性:

TreeViewItem