使用HierarchicalDataTemplate创建具有不同UI控件的子节点的TreeView

时间:2014-07-15 15:51:08

标签: c# wpf xaml treeview hierarchicaldatatemplate

我正在尝试创建TreeView,允许类型为textBlockcomboBox的子节点。这是一张这样的图片:

enter image description here

我认为这是一个可以通过使用HierarchicalDataTemplate来解决的问题,因为xaml是我将指定我使用的UI控件的代码区域。到目前为止,我尝试使用我的StackPanel实现HierarchicalDataTemplate,如此:

<HierarchicalDataTemplate DataType="{x:Type data:DataModel}" ItemsSource="{Binding Children}">
    <StackPanel>
        <TextBlock Text="{Binding DisplayName}" />
        <ComboBox ItemsSource="{Binding CommandCollection}" />
    </StackPanel>
</HierarchicalDataTemplate>

但是我没有用这个来实现正确的解决方案,因为StackPanel基本上是设置每个节点,因此它们包含textBlockcomboBox。这是一个问题,因为每个子节点都是textBlockcomboBox,而不是两者。如何设置允许HierarchicalDataTemplate子节点为TreeViewtextBlocks的{​​{1}}?如果您想了解我的comboBoxes如何实施或想要查看更多代码的详细信息,请与我们联系。

可以找到此问题的一些背景参考herehere

1 个答案:

答案 0 :(得分:0)

通常,使用相应的数据模板模拟不同类型的数据是个好主意。这可以通过将模板放在TreeView.Resources并使用DataTemplate.DataType属性来隐式实现。

以下是一个示例:[Link]

唯一不同的是,您将使用分层模板并将模板的ItemsSource分别绑定到包含子项的属性。