将子项和父项的列表扁平化为树视图层次结构

Flattened list of child and parents to a tree view hierarchy

我有一个如下所示的对象列表:

  public class Folders
     {
         public string name { get; set; }
         public string description { get; set; }
         public string path { get; set; }
         public string id { get; set; }
         public AccessType accessType { get; set; }
     }

这些对象都是从一个非常难看的 JSON 中解析出来的,我已经设法将列表压缩到这个。

我遇到的问题是我需要使用 WPF 创建树视图,但现在我在将层次结构创建到树中时遇到了问题。 path 属性 具有该特定文件夹的路径。 这是 JSON.

{
  "name": "DataRoot",
  "description": "Root data directory node",
  "path": "DataRoot",
  "id": "00000000-0000-0000-0000-000000000000",
  "children": [
    {
      "name": "Second folder",
      "description": "Second folder",
      "path": "Second folder",
      "id": "00000000-0000-0000-0000-000000000001",
      "children": [
        {
          "name": "Third Folder",
          "description": "Third Folder",
          "path": "Second folder/Third Folder",
          "id": "00000000-0000-0000-0000-000000000002",
          "children": [
            {
              "name": "Fourth Folder",
              "description": "Fourth Folder",
              "path": "Second folder/Third Folder/Fourth Folder",
              "id": "00000000-0000-0000-0000-000000000003",
              "accessType": {
                "read": true,
                "write": true
              },
              "children": []
            }
          ]
        },
        {
          "name": "Fifth Folder",
          "description": "Review Required",
          "path": "Second folder/Fifth Folder,
          "id": "00000000-0000-0000-0000-000000000003",
          "children": []
        },
        {
          "name": "Sixth Folder",
          "description": "Sixth Folder",
          "path": "Second folder/Sixth Folder",
          "id": "00000000-0000-0000-0000-000000000004",
          "children": [
            {
              "name": "Seventh Folder",
              "description": "Seventh Folder",
              "path": "Second folder/Sixth Folder/Seventh Folder",
              "id": "00000000-0000-0000-0000-000000000005",
              "children": []
            }
          ]
        }
      ]
    }
  ]
}

我似乎无法开发一种算法来在树文件夹中创建层次结构... 我想好好利用 path 属性,但我仍然找不到一个好的方法来使用它,这样我就可以让树看起来像它应该的样子。 正如我所说,我的列表被扁平化了,但现在我不知道什么是开发层次结构的好算法。

谢谢,请帮忙:)

I need to create a Tree View using WPF

必须枚举 json 个节点(JsonElement 如果使用 System.Text.Json)并通过创建 TreeViewItems 将它们添加到 WPF TreeView此时自己处于第几级节点

SO 不是快速回答这个问题的地方。


我已经编写了一个基本的 WPF JSON Treeview 作为 .Net Core WPF 控件,可以作为 Nuget 包安装。安装后,看看它是否扁平化你想要的外观。

如果没有,请查看我的 Github 存储库,看看是否有可供您作为工作基础的示例。 (您是否有更新代码建议,请加入该项目并提交 PR)。

示例代码