【问题标题】:How can I populate a treeview recursively with objects through code in wpf如何通过 wpf 中的代码使用对象递归填充树视图
【发布时间】:2021-06-23 15:02:25
【问题描述】:

我正在尝试从具有子对象的对象列表中填充树视图。我情不自禁地觉得我已经很近了,但还是少了点什么。我希望能够将这个对象列表提供给它,以相应地使用相同的子结构填充树视图。

foreach (var folder in folders)
{
    TreeViewItem item = new TreeViewItem();
    item.Header = folder.Name;
    Populate(folder, item);
    //trvstructure is the xaml treeview
    trvStructure.Items.Add(item);
}

void Populate(Folder folder, TreeViewItem treeViewItem)
{
    TreeViewItem trView = new();
    trView.Header = folder.Name;
    treeViewItem.Items.Add(trView);

    foreach (var item in folder.Folders)
    {
        treeViewItem.Items.Add(item.Name);
        Populate(item, trView);
    }
}

我有一个这些类的列表,每个类都包含子元素以显示子文件夹

public class Folder
{
    public string Name { get; set; }
    public List<Folder> Folders { get; set; } = new List<Folder>();
}

预期输出

-A
 -B
  -C
-B
 -C
  -D

这是我得到的输出

感谢所有帮助:D

【问题讨论】:

标签: c# wpf treeview


【解决方案1】:

在我的情况下,我的顶级文件夹与我的对象列表分开,所以我能够像这样实现我想要的。

        TreeViewItem item = new TreeViewItem();
        item.Header = topFolder;
        foreach (var folder in folders)
        {

            //item.Header = folder.Name;
            Populate(folder, item);

        }
        trvStructure.Items.Add(item);

    void Populate(Folder folder, TreeViewItem treeViewItem)
    {
        TreeViewItem trView = new();
        trView.Header = folder.Name;
        treeViewItem.Items.Add(trView);

        foreach (var item in folder.Folders)
        {
            Populate(item, trView);
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 2013-07-10
    • 2013-09-21
    • 2022-10-17
    • 2011-07-17
    • 2013-04-27
    • 1970-01-01
    相关资源
    最近更新 更多