说明
面向 AI 对话与客服场景的会话列表组件,纯受控展示、不依赖任何浏览器 API。
常见能力:
- 可分组会话列表,组内置顶项自动排前,ActiveKey 双向绑定选中
- Creation 新建按钮 + OnCreate;Title 列表标题
- Renamable / Pinnable / Deletable 一键生成行内“⋯”命令,或 Commands 自定义
- 重命名走行内编辑(双击标题或菜单项),Enter 提交 / Esc 取消
- OnCommand 回传会话与命令(delete / pin / unpin 由宿主处理)
- 整表 Loading 骨架 + 单条流式 Loading + Unread 红点 + Disabled + 空态
- 行内“⋯”复用 Dropdown,自带点击外部关闭、多实例互斥
- 纯受控展示、无 JS 互操作,明暗主题随 CSS 令牌自动适配
用法
<Conversations Items="@_conv" @bind-ActiveKey="@_active"
Groupable="true" Creation="true" Title="会话列表"
Renamable="true" Pinnable="true" Deletable="true"
OnCreate="Create" OnRename="Rename" OnCommand="Command" />
@code {
List<Conversation> _conv = new()
{
new("c1", "帮我设计一个订单实体") { Group = "今天", Icon = "database", Time = "09:24", Unread = true },
new("c2", "生成客户管理页面") { Group = "昨天", Pinned = true },
};
string _active = "c1";
void Create() => _conv.Insert(0, new Conversation(Guid.NewGuid().ToString("N"), "新建会话") { Group = "今天" });
void Rename(ConversationRenameArgs a) => a.Item.Text = a.Value;
void Command(ConversationCommandArgs a) {
if (a.Command.Key == "delete") _conv.Remove(a.Item);
else if (a.Command.Key is "pin" or "unpin") a.Item.Pinned = a.Command.Key == "pin";
}
}
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
ActiveKey |
string |
null |
当前选中的会话 Key(双向绑定)。 |
ActiveKeyChanged |
EventCallback<string> |
— | 事件 |
Commands |
List<ConversationCommand> |
null |
自定义每行“⋯”命令列表;为 null 时按 Deletable / Renamable / Pinnable 生成内置命令。 |
Creation |
bool |
false |
是否显示顶部“新建会话”按钮。 |
CreationText |
string |
"新建会话" |
新建按钮文案(作为翻译键),默认“新建会话”。 |
Deletable |
bool |
false |
内置“删除”命令。 |
EmptyText |
string |
"暂无会话" |
空态文案(作为翻译键),默认“暂无会话”。 |
Groupable |
bool |
true |
是否按 Group 分组显示,默认 true(无分组名的组不显示表头)。 |
Items |
List<Conversation> |
null |
会话数据。选中、置顶、删除、重命名后由宿主更新此列表并触发重渲染。 |
Loading |
bool |
false |
整表加载态:显示骨架行。 |
OnCommand |
EventCallback<ConversationCommandArgs> |
— | 事件 命令回调(内置 rename 除外,rename 走行内编辑并触发 OnRename)。 |
OnCreate |
EventCallback |
— | 事件 点击新建按钮回调。 |
OnRename |
EventCallback<ConversationRenameArgs> |
— | 事件 重命名提交回调。 |
OnSelect |
EventCallback<Conversation> |
— | 事件 选中会话变化回调,回传该会话对象。 |
Pinnable |
bool |
false |
内置“置顶 / 取消置顶”命令(文案随当前 Pinned 切换)。 |
Renamable |
bool |
false |
内置“重命名”命令(选中后进入行内编辑,提交触发 OnRename)。双击标题同样可重命名。 |
Title |
string |
null |
顶部标题(作为翻译键);为空则不显示标题文字。 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群