说明
面向“资源管理器 / 知识库目录 / 工程结构 / 会话产出多文件”的层级树组件,把一棵
常见能力:
- 可展开 / 收起的递归层级树:目录 folder / folder-open 暖色图标,箭头 chevron 随状态切换
- 文件行复用 FileCard 的“扩展名 / MIME → 分类色 + 图标”映射,Icon / Color 可逐项覆盖
- 点目录展开收起触发 OnExpand;点文件在 Selectable 下选中触发 OnSelect
- SelectedKey 支持 @bind-SelectedKey 双向绑定,选中态可被宿主外部回填
- DefaultExpandAll 首屏全展开;逐节点 Expanded / Disabled 可控;空态 EmptyText 走词条
- ShowIcon 行首图标开关、ShowSize 文件行尾格式化大小(B/KB/MB/GB/TB,≤0 不显示)
- 展开 / 选中状态由根组件内部共享上下文托管,递归渲染、纯展示、无 JS 互操作
用法
<Folder Nodes="@tree" Selectable="true" ShowSize="true"
@bind-SelectedKey="_sel" OnSelect="Pick" OnExpand="Toggle" />
<p>已选中:@_sel</p>
@code {
string _sel;
List<FolderNode> tree = new()
{
FolderNode.Dir("src", new FolderNode("Program.cs", "cs", 860),
FolderNode.Dir("Models", new FolderNode("Order.cs", "cs", 1890))),
new("README.md", "md", 1536),
new("bundle.zip", "zip", 18_400_000),
};
void Pick(FolderNode n) => UI.Info($"选中 {n.Name}");
void Toggle(FolderNode n) { }
}
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
DefaultExpandAll |
bool |
false |
首次渲染时是否展开全部目录。默认 false(按各节点的 Expanded)。 |
EmptyText |
string |
null |
空态文本(作为翻译键)。留空则不显示空态。 |
Nodes |
List<FolderNode> |
null |
树节点集合(根层),子层级由 Children 递归承载。 |
OnExpand |
EventCallback<FolderNode> |
— | 事件 展开 / 收起某个目录的回调(回传该目录节点,展开状态见 FolderNode)。 |
OnSelect |
EventCallback<FolderNode> |
— | 事件 选中某个文件叶的回调。 |
Selectable |
bool |
true |
是否可点选文件(选中态与 OnSelect 生效)。默认 true。 |
SelectedKey |
string |
null |
当前选中节点的标识(Key 优先,缺省为 Name);支持 @bind-SelectedKey。 |
SelectedKeyChanged |
EventCallback<string> |
— | 事件 SelectedKey 变化回调(双向绑定用)。 |
ShowIcon |
bool |
true |
是否显示行首的类型 / 文件夹图标。默认 true。 |
ShowSize |
bool |
false |
是否在行尾显示文件大小(仅文件叶)。默认 false。 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群