说明
面向 AI 会话“输入区”的受控输入条组件,除一个可选的聚焦方法外不依赖自定义 JS(自动增高用 CSS
常见能力:
- @bind-Value 双向绑定,发送后自动清空并经 OnSend 回传文本
- SubmitOnEnter:Enter 发送 / Shift+Enter 换行(可关闭,仅按钮触发)
- Loading 时主按钮变红色停止 + 触发 OnStop,且回车不发送;SendIcon / StopIcon 可换
- 空内容默认禁用发送,AllowEmpty 放开;MaxLength 限字;Disabled 沿用基类
- AutoSize 纯 CSS field-sizing 自动增高(无 JS),关闭则固定单行
- Header 挂 Attachments、Prefix 放附件 / 语音按钮、Footer 放提示 / 字数
- Placeholder / 发送 / 停止走词条,输入与插槽文案视为业务数据;明暗主题随 CSS 令牌适配
用法
<Sender @bind-Value="_text" Placeholder="输入消息,Enter 发送"
Loading="@_gen" OnSend="Send" OnStop="Stop">
<Header>
@if (_files.Count > 0)
{
<Attachments Items="@_files" ListType="pill" Uploadable="false" OnRemove="Remove" />
}
</Header>
<Prefix>
<button class="tool" @onclick="AddFile"><Icon Type="paperclip" Size="16" /></button>
</Prefix>
<Footer><span>@(_text?.Length ?? 0) 字</span></Footer>
</Sender>
@code {
string _text = "";
bool _gen;
void Send(string text) { _gen = true; /* 推入会话 + 请求模型 */ }
void Stop() => _gen = false;
}
API 参数
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
Actions |
RenderFragment |
null |
工具栏右侧插槽,排在发送按钮之前:放模型选择、语音输入这类紧凑触发器。发送中它照样可点,因为「换模型 / 补口述」不该被一轮回答锁住。 |
AllowEmpty |
bool |
false |
是否允许空内容发送。默认 false(去除首尾空白后为空则禁用发送)。 |
AutoSize |
bool |
true |
文本域是否随内容自动增高。默认 true(CSS field-sizing,无 JS)。 |
Footer |
RenderFragment |
null |
底部插槽(可放快捷键提示、字数统计等说明)。 |
Header |
RenderFragment |
null |
顶部插槽(可放 Attachments 附件条等)。 |
Loading |
bool |
false |
是否处于“生成中”:主按钮变为停止、回车不发送。默认 false。 |
MaxLength |
int |
0 |
最大字符数,0 表示不限制。 |
OnSend |
EventCallback<string> |
— | 事件 发送回调,回传当前文本。 |
OnStop |
EventCallback |
— | 事件 生成中点击停止的回调。 |
Placeholder |
string |
"输入消息…" |
占位文字(作为翻译键)。默认“输入消息…”。 |
Prefix |
RenderFragment |
null |
工具栏左侧插槽(可放附件 / 语音等触发按钮)。 |
SendIcon |
string |
"send" |
发送按钮图标名(Icon Type,不本地化)。 |
StopIcon |
string |
"square" |
停止按钮图标名(Icon Type,不本地化)。 |
SubmitOnEnter |
bool |
true |
是否用 Enter 发送(Shift+Enter 换行)。默认 true;为 false 时仅按钮发送。 |
Value |
string |
null |
输入的文本(支持 @bind-Value 双向绑定)。 |
ValueChanged |
EventCallback<string> |
— | 事件 |
Visible |
bool |
true |
取得或设置组件是否可见,默认为false。 |
VisibleChanged |
EventCallback<bool> |
— | 事件 取得或设置组件可见性变化时的回调事件。 |
Class |
string |
null |
取得或设置组件的CSS类名,用于自定义样式。 |
Disabled |
bool |
false |
取得或设置组件是否禁用,默认为false。 |
Style |
string |
null |
取得或设置组件的内联样式,用于自定义样式。 |
所有组件均继承
BaseComponent,除上表参数外还支持Class、Style、Disabled、Visible。
扫码关注公众号
扫码加入 QQ 群