You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用path属性将扁平化Folders列表转换为WPF TreeView层级结构

实现方案

第一步:修改Folders实体类

要支持TreeView层级绑定,首先需要给原类新增子节点集合属性:

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; }
    // 新增子节点集合,需要动态更新UI可以换成ObservableCollection<Folders>
    public List<Folders> Children { get; set; } = new List<Folders>();
}

第二步:基于path构建层级树的核心算法

通过路径深度排序+字典快速查找父节点,时间复杂度为O(n),适合大量节点场景:

public List<Folders> BuildFolderTree(List<Folders> flatFolderList)
{
    // 按路径深度从小到大排序,保证父节点一定早于子节点被处理
    var sortedFolders = flatFolderList.OrderBy(f => f.path.Split('/').Length).ToList();
    var pathMap = new Dictionary<string, Folders>();
    var rootNodes = new List<Folders>();

    foreach (var folder in sortedFolders)
    {
        pathMap.TryAdd(folder.path, folder);
        var pathSegments = folder.path.Split('/');
        // 路径只有1段说明是根节点
        if (pathSegments.Length == 1)
        {
            rootNodes.Add(folder);
            continue;
        }
        // 拼接父路径(去掉最后一级目录)
        var parentPath = string.Join('/', pathSegments.Take(pathSegments.Length - 1));
        // 查找父节点并加入子集合
        if (pathMap.TryGetValue(parentPath, out var parentFolder))
        {
            parentFolder.Children.Add(folder);
        }
    }
    return rootNodes;
}

第三步:WPF TreeView绑定配置

XAML中使用层级数据模板绑定即可自动渲染树结构:

<TreeView ItemsSource="{Binding 生成的根节点集合属性名}">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:Folders}" ItemsSource="{Binding Children}">
            <TextBlock Text="{Binding name}" ToolTip="{Binding description}"/>
        </HierarchicalDataTemplate>
    </TreeView.Resources>
</TreeView>

适配说明

  • 如果路径分隔符为反斜杠\,修改Split('/')为Split('\\')即可
  • 如果存在路径缺失父节点的异常场景,可以将查找父节点失败的节点统一加入根节点集合做降级处理
  • 需要支持运行时动态增删子节点时,把List<Folders>替换为ObservableCollection<Folders>即可实现UI自动同步更新

内容的提问来源于stack exchange,提问作者Andrei Costache

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:24:00