mcpField
S
syncfusion-blazor-treeview

syncfusion-blazor-treeview

github.com/syncfusion设计与 UI4371 次安装1 周前更新
代码仓库

关于 syncfusion-blazor-treeview

该技能为 Blazor 开发者提供 Syncfusion TreeView 的实现参考,用于展示和操作层级数据。内容覆盖数据绑定、节点选择与编辑、拖放、筛选及大型数据集虚拟化。

主要功能

  1. 01绑定本地或远程数据源
  2. 02支持单选、多选及复选框
  3. 03编辑节点并拖放调整层级
  4. 04筛选搜索与按需加载
  5. 05大型数据集虚拟滚动

适用场景

  1. 01构建带拖放功能的文件浏览器
  2. 02制作组织结构与层级导航
  3. 03创建分类筛选或权限界面

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-treeview

安装后在 Claude Code 中输入/syncfusion-blazor-treeview确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced-features.md
authorization-authentication.md
checkbox-features.md
customization-styling.md
data-binding.md
events-handling.md
expand-collapse-actions.md
getting-started.md
navigation-patterns.md
node-editing.md
node-selection.md

详细介绍

实现 Syncfusion Blazor TreeView 组件

Blazor TreeView 组件以可展开/折叠的树形结构显示分层数据。它支持本地和远程数据绑定、单选和多选、编辑、复选框、拖放排序、大型数据集虚拟化、筛选以及全面的事件处理。


📋 目录

  1. 适用场景
  2. 安装与设置
  3. 快速入门
  4. 关键属性
  5. 关键方法
  6. 关键事件
  7. 常见模式
  8. 完整参考导航

适用场景

在需要以下功能时使用 TreeView 组件:

  • 显示分层数据:以树形结构展示可展开/折叠的节点
  • 单选:允许用户从树中选择一个节点
  • 多选:支持使用 Ctrl+Click 和 Shift+Click 选择多个树节点
  • 复选框选择:提供基于复选框的多选,并自动管理父子节点状态
  • 编辑节点:允许以内联方式重命名节点或编辑节点文本
  • 拖放:支持在层级结构中重新排序节点
  • 筛选和搜索:实现搜索功能以查找节点
  • 远程数据源:绑定到 Web API、OData 服务或自定义端点
  • 处理事件:响应展开、折叠、选择、编辑和拖放操作
  • 虚拟化:通过平滑滚动显示大型数据集(1000+ 个节点)
  • 自定义样式:为节点应用图标、颜色和模板

安装与设置

安装 Syncfusion NuGet 包并配置 Blazor 项目:

// 1. Install NuGet packages
// Install-Package Syncfusion.Blazor.Navigations -Version 26.1.35
// Install-Package Syncfusion.Blazor.Themes -Version 26.1.35

// 2. Add to _Imports.razor
@using Syncfusion.Blazor
@using Syncfusion.Blazor.Navigations

// 3. Register service in Program.cs
builder.Services.AddSyncfusionBlazor();

// 4. Add CSS theme to Index.html or _Layout.cshtml
<link href="_content/Syncfusion.Blazor.Themes/bootstrap5.css" rel="stylesheet" />

快速入门

@using Syncfusion.Blazor.Navigations

<SfTreeView TValue="MailItem">
    <TreeViewFieldsSettings TValue="MailItem"
        Id="Id"
        Text="FolderName"
        Child="Children"
        DataSource="@MyFolder">
    </TreeViewFieldsSettings>
    <TreeViewEvents TValue="MailItem" NodeSelected="OnNodeSelected"></TreeViewEvents>
</SfTreeView>

@code {
    public class MailItem
    {
        public string? Id { get; set; }
        public string? FolderName { get; set; }
        public List<MailItem>? Children { get; set; }
    }

    void OnNodeSelected(NodeSelectEventArgs args)
    {
        Console.WriteLine($"Selected: {args.NodeData.Text}");
    }

    List<MailItem> MyFolder = new()
    {
        new MailItem { Id = "1", FolderName = "Inbox", Children = new() },
        new MailItem { Id = "2", FolderName = "Sent", Children = new() }
    };
}

关键属性

属性类型默认值用途
AllowDragAndDropboolfalse启用/禁用拖放层级排序
AllowEditingboolfalse允许双击重命名节点
AllowMultiSelectionboolfalse启用 Ctrl+Click 多选
ShowCheckBoxboolfalse为每个节点显示复选框
AutoCheckbooltrue选中父节点时自动选中/取消选中子节点
EnablePersistenceboolfalse将展开/选中/勾选状态保存到 localStorage
EnableVirtualizationboolfalse为 1000+ 个节点启用虚拟滚动(需要设置 Height)
ExpandedNodesstring[]Empty初始展开的节点 ID(支持双向绑定)
SelectedNodesstring[]Empty已选中节点的 ID(支持双向绑定)
CheckedNodesstring[]Empty已勾选节点的 ID(支持双向绑定)
LoadOnDemandbooltrue仅在节点展开时加载其子节点
ExpandOnExpandActionClick通过 Click/DoubleClick/None 触发展开
Heightstring"auto"固定高度(虚拟化所必需)

关键方法

方法用途
ExpandAllAsync()展开所有节点
ExpandAllAsync(string[] nodeIds)根据 ID 展开指定节点
CollapseAllAsync()折叠所有节点
CollapseAllAsync(string[] nodeIds)折叠指定节点
BeginEditAsync(string nodeId)进入节点的编辑模式
GetTreeData()获取所有树数据
GetTreeData(string nodeId)根据 ID 获取指定节点的数据
EnsureVisibleAsync(string nodeId)滚动页面以显示节点
CheckAllAsync()勾选所有复选框
UncheckAllAsync()取消勾选所有复选框
ClearStateAsync()清除所有状态(选择、展开、勾选)

关键事件

事件触发时机常见用途
CreatedTreeView 初始化完成初始化后的设置、加载偏好设置
DataBound数据绑定完成自动展开默认节点、验证数据
NodeSelected单击节点加载节点详细信息、启用操作
NodeClicked点击节点区分单击和双击
NodeExpanded展开节点加载子节点(按需加载)
NodeCollapsed折叠节点可选:从内存中卸载子节点
NodeEditing进入编辑模式前验证权限、阻止编辑
NodeEdited确认编辑后验证新文本、保存到服务器
OnNodeDragStart开始拖动阻止拖动受限节点
NodeDropped完成放置更新服务器上的层级结构
NodeChecking更改复选框前阻止勾选受限节点
NodeChecked更改复选框后更新相关数据、触发操作
DataSourceChanged更新数据源重新应用筛选器、刷新计算结果
OnActionFailure操作失败(API 错误)恢复错误、显示通知
OnKeyPress按下按键实现键盘快捷键(Delete、F2 等)

常见模式

模式 1:基本选择
<SfTreeView TValue="Item" @bind-SelectedNodes="@SelectedIds">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
    <TreeViewEvents TValue="Item" NodeSelected="OnSelect"></TreeViewEvents>
</SfTreeView>

@code {
    string[] SelectedIds = Array.Empty<string>();
    void OnSelect(NodeSelectEventArgs args) => Console.WriteLine(args.NodeData.Text);
}
模式 2:多选
<SfTreeView TValue="Item" AllowMultiSelection="true" @bind-SelectedNodes="@SelectedIds">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
</SfTreeView>
模式 3:按需加载
void OnNodeExpanded(NodeExpandEventArgs args)
{
    if (args.NodeData.HasChild && args.NodeData.Child == null)
    {
        // Load children from API
        args.NodeData.Child = await FetchChildren(args.NodeData.Id);
    }
}
模式 4:拖放
<SfTreeView TValue="Item" AllowDragAndDrop="true">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
    <TreeViewEvents TValue="Item" NodeDropped="OnDropped"></TreeViewEvents>
</SfTreeView>

void OnDropped(DragAndDropEventArgs args) => UpdateHierarchy(args);
模式 5:节点编辑
<SfTreeView TValue="Item" AllowEditing="true" DoubleClickAction="DoubleClickAction.Edit">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
    <TreeViewEvents TValue="Item" NodeEdited="OnEdited"></TreeViewEvents>
</SfTreeView>

void OnEdited(NodeEditEventArgs args) => SaveChanges(args.NodeData);
模式 6:复选框
<SfTreeView TValue="Item" AllowCheckBoxes="true" ChildChecking="ChildCheckState.Both">
    <TreeViewFieldsSettings TValue="Item" DataSource="@Items" />
</SfTreeView>

var checked = treeRef.GetAllCheckedNodes();

文档与导航指南

入门

📄 阅读: references/getting-started.md

  • 安装和 NuGet 包设置
  • 按类型配置项目(WebAssembly、Server、Web App、MAUI)
  • CSS 主题配置
  • 服务注册和首个 TreeView 组件
数据绑定与数据源

📄 阅读: references/data-binding.md

  • 本地数据绑定(分层结构和自引用结构)
  • 使用 OData、OData V4 和 Web API 适配器处理远程数据
  • 大型数据集的按需加载
  • TreeViewFieldsSettings 属性映射
  • 用于绑定后操作的 DataBound 事件
节点选择

📄 阅读: references/node-selection.md

  • 单节点选择(默认行为)
  • 使用 AllowMultiSelection 属性进行多选
  • 通过 NodeSelected 事件访问所选节点数据
  • 使用 SelectedNodes 绑定进行程序化选择
  • 选择验证和条件选择
展开与折叠操作

📄 阅读: references/expand-collapse-actions.md

  • 展开/折叠方法(ExpandAllAsync、CollapseAllAsync)
  • 使用 ExpandedNodes 双向绑定进行程序化控制
  • 通过数据源设置初始展开状态
  • 使用 TreeViewNodeAnimationSettings 设置展开/折叠动画
  • 通过 NodeExpanded 事件按需加载子节点
节点编辑

📄 阅读: references/node-editing.md

  • 使用 AllowEditing 属性启用编辑
  • 双击进入编辑模式
  • 使用 BeginEditAsync 方法以编程方式进入编辑模式
  • 使用 NodeEditing 和 NodeEdited 事件进行验证
  • 带冲突检测的重命名操作
复选框功能

📄 阅读: references/checkbox-features.md

  • 使用 ShowCheckBox 属性进行多项选择
  • 使用 AutoCheck 自动同步父子节点
  • 使用 CheckedNodes 双向绑定进行程序化控制
  • 通过筛选和迭代获取已勾选的节点
  • 权限和基于角色的复选框模式
事件和回调

📄 阅读: references/events-handling.md

  • 生命周期事件(Created、DataBound)
  • 选择事件(NodeSelected、SelectedNodesChanged)
  • 展开/折叠事件(NodeExpanded、NodeCollapsed)
  • 编辑事件(NodeEditing、NodeEdited)
  • 复选框事件(NodeChecking、NodeChecked)
  • 拖放事件(OnNodeDragStart、NodeDropped)
  • 键盘快捷键(Enter、Delete、F2、方向键)
高级功能

📄 阅读: references/advanced-features.md

  • 支持层级重排的拖放
  • 面向 1000+ 个节点的 UI 虚拟化
  • 搜索和筛选功能
  • 排序(升序、降序、无)
  • 性能优化技巧
自定义和样式

📄 阅读: references/customization-styling.md

  • 图标自定义(展开/折叠、节点图标)
  • 根据数据动态设置图标
  • 文本换行和显示格式
  • 使用 e-icons 类进行 CSS 样式设置
  • 主题支持和响应式设计
授权和安全

📄 阅读: references/authorization-authentication.md

  • 使用 AuthorizeView 配置身份验证
  • 基于角色的授权和权限
  • 节点级访问控制
  • 基于声明的授权模式
  • 保护编辑操作和拖放功能
导航模式

📄 阅读: references/navigation-patterns.md

  • 节点遍历方法(父节点、子节点、同级节点)
  • 面包屑导航实现
  • 用于节点链接的 NavigateUrl 属性
  • 父子导航关系
  • 深层链接到特定节点

快速链接和实际示例

需要帮助? 从以下内容开始:

  1. 快速入门 - 5 分钟内运行起来
  2. 常见模式 - 复制粘贴适用于你的用例的模式
  3. 关键属性 - 查找属性详情
  4. data-binding.md - 了解数据绑定方法
  5. events-handling.md - 了解所有事件

实际应用示例:

  • 文件浏览器:使用层级数据 + 展开折叠 + 图标 + 拖放
  • 组织架构图:使用数据绑定 + 模板 + 多级导航
  • 导航菜单:使用层级数据 + 键盘导航 + 按需加载
  • 类别筛选器:使用自引用数据 + 复选框 + 筛选
  • 权限 UI:使用复选框 + AutoCheck + 基于角色的授权

总结

本技能为实现 Syncfusion Blazor TreeView 组件提供全面指导。请使用上方的文档和导航指南部分,根据你的用例查找所需的参考文件。

评论

支持 Markdown