2

我正在尝试将 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>

有什么建议么?

4

1 回答 1

1

您需要像这样将 ItemsSource 应用于孩子:

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

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

于 2010-12-16T00:00:19.577 回答