使用HierarchicalDataTemplate显示混合类型

0wl*_*0wl 3 wpf treeview hierarchicaldatatemplate

我试图使用HierarchicalDataTemplate显示混合类型的树视图,但到目前为止我的所有尝试都失败了..

我有一个类似树的班级,可以有两种不同类型的孩子.(位置和设备).为了让事情变得可以理解,我想要展示的是:

->Location 1
    |
    |--->Device 1.1
    |--->Device 1.2
    |--->Location 1.2
          |
          |---->Device 1.2.1 
          |---->Location 1.2.1
            .....etc.....
Run Code Online (Sandbox Code Playgroud)

我尝试了很多我找到的解决方案,但都没有效果.在大多数情况下,我只是在树视图中获取类名.我正在尝试使用HierarchicalDataTemplate做什么?如果是,请让我知道如何.

0wl*_*0wl 5

经过几个小时的反复试验,我回到了开始并找到了解决方案.我简直不敢相信它真的那么简单.

模板看起来像这样:

<HierarchicalDataTemplate x:Key="NavigatorDataTemplate" DataType="{x:Type local:Location}" ItemsSource="{Binding Locations}">
    <StackPanel>
        <TextBlock Text="{Binding Description}"/>
        <ListBox ItemsSource="{Binding Devices}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Description}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </StackPanel>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

TreeView就是这样的:

<TreeView Name="treeNav" ItemTemplate="{StaticResource NavigatorDataTemplate}"/>
Run Code Online (Sandbox Code Playgroud)

由于需要显示的集合已经在代码中,我只需将其设置为ItemsSource:

treeNav.ItemsSource = locations;
Run Code Online (Sandbox Code Playgroud)