WPF - XAML Treeview для связывания Generic.List - PullRequest
2 голосов
/ 16 декабря 2010

Я пытаюсь связать IList с WPF TreeView в иерархическом представлении. Вот мой объект:

public class TeamsTreeViewItem
 {
  public string DisplayValue { get; set; }
  public string KeyValue { get; set; }

  readonly List<TeamsTreeViewItem> children = new List<TeamsTreeViewItem> ();

  public IList<TeamsTreeViewItem> Children
  {
   get
   {
    return children;
   }
  }

  public override string ToString ()
  {
   return DisplayValue;
  }
 }

Я не знаю, сколько детей будет иметь конкретный объект, и дети тоже могут иметь детей.

Я спорю с моим HierarchialDataTemplate, но не удается:

    <TreeView Canvas.Left="263" Canvas.Top="12" Height="200" Name="TeamTreeView" Width="120">
        <TreeView.Resources>
            <HierarchicalDataTemplate  DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding DisplayValue}" >
                <TextBlock Text="{Binding DisplayValue}"/>
            </HierarchicalDataTemplate>
            <HierarchicalDataTemplate  DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Children}" >
                <TextBlock Text="{Binding DisplayValue}"/>
            </HierarchicalDataTemplate>
        </TreeView.Resources>
    </TreeView>

Есть предложения?

1 Ответ

1 голос
/ 16 декабря 2010

Вам нужно применить ItemsSource к детям, вот так:

<HierarchicalDataTemplate DataType="{x:Type local:TeamsTreeViewItem}" ItemsSource="{Binding Path=Children}">
    <TextBlock Text="{Binding DisplayValue}"/>
</HierarchicalDataTemplate>

Я применил этот DataTemplate на основе DataType, поэтому, если дочерние объекты одного и того же типа (TeamsTreeViewItem) должны автоматически применять его к любому элементу, который он находит, такого типа, даже если это дочерний элемент, внук или великий здорово отлично .... внук. Просто убедитесь, что вы включили пространство имен (обозначаемое здесь как «локальное»), в котором определен TeamsTreeViewItem.

...