WPF - XAML Treeview到Generic.List绑定

时间:2010-12-15 23:51:10

标签: wpf xml binding treeview ilist

我正在尝试将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 个答案:

答案 0 :(得分:1)

您需要将ItemsSource应用于子项,如下所示:

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

我基于DataType应用了这个DataTemplate,这样如果子类型相同(TeamsTreeViewItem)应该自动将它应用于它找到的那个类型的项目,即使它是一个孩子,孙子或者伟大的太棒了......孙子。只需确保包含TeamsTreeViewItem定义的命名空间(此处表示为“local”)。