wpf - 使用 HierarchicalDataTemplate 显示混合类型

标签 wpf treeview hierarchicaldatatemplate

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

我有一个树状类,可以有两种不同类型的 child 。 (位置和设备)。为了让事情更容易理解,这里是我试图展示的例子:

->Location 1
    |
    |--->Device 1.1
    |--->Device 1.2
    |--->Location 1.2
          |
          |---->Device 1.2.1 
          |---->Location 1.2.1
            .....etc.....

我已经尝试了很多我找到的解决方案,但都没有奏效。在大多数情况下,我只是在 TreeView 中获取类名。 我正在尝试使用 HierarchicalDataTemplate 做的事情甚至可能吗?如果是,请告诉我怎么做。

最佳答案

经过几个小时的反复试验,我回到起点并找到了解决方案。我不敢相信它实际上如此简单。

模板看起来像这样:

<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>

TreeView 就是这样的:

<TreeView Name="treeNav" ItemTemplate="{StaticResource NavigatorDataTemplate}"/>

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

treeNav.ItemsSource = locations;

关于wpf - 使用 HierarchicalDataTemplate 显示混合类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12023830/

相关文章:

.net - 更改分层 TreeView 中的突出显示颜色

XamlReader.Parse 似乎没有使用 HierarchicalDataTemplate

WPF 工具提示绑定(bind)

WPF:路由事件还是常规事件?

c# - 调用线程无法访问此对象,因为另一个线程拥有它。异常(exception)

c# - 非 UI 线程上的 WPF 调度程序

c# - 将 XDocument 绑定(bind)到 TreeView - 属性不显示

C# 退出消息框弹出两次。我想生成一次事件。

python - 如何使用 Glade 和 Gtk 创建 Treeview?

c# - 为什么这个 C# 代码这么慢?优化目录/文件搜索和添加所需