【问题标题】:Bind Treeview to object with list of same object in WPF将 Treeview 绑定到具有 WPF 中相同对象列表的对象
【发布时间】:2011-12-16 10:51:28
【问题描述】:

我正在尝试制作报告树视图。我可以在其中编写一些文本作为父节点,如果需要,我会添加添加字符串作为子节点以显示更多信息。

我做了一个报告对象:

public class Report
{
    private List<Report> reportList = new List<Report>();

    public string Text { get; set; }
    public List<Report> Reports
    {
        get
        {
            return reportList;
        }
        set
        {
            reportList = value;
        }
    }
}

然后我会有一个报告集合,然后我会将其输入到树视图项目源中,但我不知道如何创建绑定以便它可以正确地创建子节点,我尝试搜索谷歌,但我不能找不到正确的方法。

这里有人可以帮助我吗?

【问题讨论】:

    标签: c# wpf binding treeview nodes


    【解决方案1】:
    <TreeView ItemsSource="{Binding ReportCollection}">
      <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Reports}">
          <TextBlock Text="{Binding Text}" />
        </HierarchicalDataTemplate>
      </TreeView.ItemTemplate>
    </TreeView>

    【讨论】:

      【解决方案2】:

      您需要使用HierarchicalDataTemplate

      <TreeView ItemsSource="{Binding Reports}">
          <TreeView.Resources>
              <HierarchicalDataTemplate DataType="{x:Type local:Report}" ItemsSource="{Binding Reports}">
                  <TextBlock Text="{Binding Text}" />
              </HierarchicalDataTemplate>
          </TreeView.Resources>
      </TreeView>
      

      【讨论】:

      • 哦,天哪...我以为我已经这样做了,但我想我一定是搞砸了绑定什么的。谢谢一堆。我可以问一个后续吗?假设我有一个人对象,他有:名字、姓氏、地址、性别、身高。在父节点中,您只想显示名字和姓氏,但在子节点中,它们会包含所有信息(各种主详细信息)我不能为此使用分层数据吗?
      • @Xenoxsis:而不是使用DataType属性根据树中元素的类型来选择HierarchicalDataTemplate(不区分不同级别的相同类型元素)您可以使用ItemTemplate 属性为下一级指定另一个HierarchicalDataTemplate
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-27
      相关资源
      最近更新 更多