TreeView有多个ItemSources

时间:2013-10-07 08:13:52

标签: wpf xaml binding itemsource

我需要在Tree View中显示来自两个不同来源的项目。我怎样才能做到这一点?

详细说明: 物品来源A:此物品来源将有一个标题,n个孩子,每个孩子最多可以有32个子孩子。

项目来源B:此项目来源将有一个标题和n个孩子。

我需要支持子项和子项的上下文菜单操作。

xaml代码应该是什么样的,我的类的结构应该是什么?

我当前的结构只有一个ItemSource,绑定代码看起来像这个

<TreeView.ItemTemplate>
  <HierarchicalDataTemplate ItemsSource="{Binding Slash}">
         <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Name}"/>
         </StackPanel>
    <HierarchicalDataTemplate.ItemTemplate>
       <DataTemplate DataType="{x:Type dt:Slash}">
           <StackPanel Orientation="Horizontal">
               <TextBlock Text="{Binding FullName}"/>
           </StackPanel>
       </DataTemplate>
    </HierarchicalDataTemplate.ItemTemplate>
  </HierarchicalDataTemplate>
</TreeView.ItemTemplate>

2 个答案:

答案 0 :(得分:0)

您可以查看我在this topic中发布的答案 如果您有任何疑问,请询问;)

答案 1 :(得分:0)

您需要做的就是将两个集合放入一个'ObservableCollection collection and then绑定that to the TreeView.ItemsSource`属性中。

如果由于某种原因,您需要输入集合,那么您仍然有三个选项;要么是子类,要么是两个集合中的两个类型,并使你的新集合成为子类型;或使它们都实现相同的接口并将其用作新集合的类型;或者扩展ObservableCollection以允许集合接受两种类型的对象,同时仍然在每个输入点检查它们的类型。