Могу ли я параметризировать источник данных в иерархическом шаблоне данных wpf? - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть иерархическая структура данных с двумя подобными поддеревьями:

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

Я хочу представить два немного разных вида дерева, используя два вида дерева.

  • Tree1: Показать подэтерации
  • Tree2: отображение невыполненных заданий

Элементы должны отображаться одинаково, но дочерние элементы должны быть выбраны с использованием другого свойства.

т.е. Я хочу параметризовать ItemsSource в HierarchicalDataTemplate:

<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 Ответ

1 голос
/ 28 апреля 2011

Поместите Viauslization данных в DataTemplate и создайте два HierarchicalDataTemplates, где вы устанавливаете ItemTemplate для созданного DataTemplate.Не существует причин, по которым вы не должны создавать две HierarchicalDataTemplates.Они предлагают вам именно ту параметризацию, которую вы хотите, и позволяют использовать один и тот же ItemTemplate для обоих

...