我可以在wpf分层数据模板上参数化数据源吗?

时间:2011-04-28 11:42:49

标签: wpf treeview binding hierarchicaldatatemplate

我有一个带有两个相似子树的分层数据结构:

Iteration:
   string  Name
   string  Image
   ObservableCollection<Iteration>  SubIterations
   ObservableCollection<Iteration>  BacklogIterations

我想使用两个树视图呈现树的两个略微不同的视图。

  • Tree1:显示子更改
  • Tree2:显示BacklogIterations

元素应显示相同,但​​需要使用不同的属性拾取子项。

即。我想参数化HierarchicalDataTemplate中的ItemsSource:

<HierarchicalDataTemplate x:Key="IterationItem"
  ItemsSource="{Binding SubIterations}"
  >
  <StackPanel Orientation="Horizontal">
    <Image Width="32" Height="32" 
       Margin="3,0" Source="{Binding Picture}" />
    <TextBlock Text="{Binding Name}" />
  </StackPanel>
</HierarchicalDataTemplate>

<TreeView ItemsSource="{Binding RootSprintIteration}">
</TreeView>

<TreeView ItemsSource="{Binding RootBacklogIteration}">
</TreeView>

如何在第二个树中获取HierarchicalDataTemplate以使用不同的ItemsSource? 我不想复制整个HierarchicalDataTemplate定义只是为了更改ItemsSource。

1 个答案:

答案 0 :(得分:1)

将数据的Viauslization放在DataTemplate中,并创建两个HierarchicalDataTemplates,将ItemTemplate设置为创建的DataTemplate。您没有理由为shouoldnt创建两个HierarchicalDataTemplates。它们为您提供了您希望的参数化,并允许您对两者使用相同的ItemTemplate