Skip to content

Textarea 多行输入框 ​

多行文本输入。按 Rows 给出初始可见行数,内容超出自动增高,支持字数统计。

契约源:lh-ui-core/specs/textarea.json · 黄金用例:lh-ui-core/cases/textarea.json(6 条,已翻译为 xUnit 测试)

基础用法 ​

受控组件:宿主监听 ValueChange 并把新值回写 Value。

9:41Textarea 基础
青花瓷
粉彩瓷
请输入描述

HTML 模拟预览(Windows / WinUI 3 外观),非真机渲染

csharp
var textarea = new LhTextarea
{
    Rows = 3,
    Placeholder = "请输入描述",
};
textarea.ValueChange += value => { /* 受控:回写 Value */ };

字数统计 ​

ShowCount 为 true 时右下角绘制字数统计;声明 Maxlength 时格式为「当前/最大」, 否则只显示当前长度。Maxlength 超出时截断新输入。

9:41字数统计
青花瓷
3/10
青花瓷
3

HTML 模拟预览(Windows / WinUI 3 外观),非真机渲染

状态 ​

Disabled 与 Readonly 都不触发 ValueChange,但只有 Disabled 呈现禁用样式; 聚焦时描边取 color.focus + textarea.focusRingWidth。

9:41Textarea 状态
禁用
聚焦描边

HTML 模拟预览(Windows / WinUI 3 外观),非真机渲染

API ​

属性 ​

属性说明类型默认值
ValueChange值变化回调(受控);disabled / readonly 时不触发event Action<string>—
Focus获得焦点时触发event Action—
Blur失去焦点时触发event Action—
Value当前文本值(受控)string""
Placeholder占位提示文字,取 color.text.placeholder 令牌string""
Rows初始可见行数;高度随行数与内容增长int3
Disabled是否禁用(不响应输入、呈现禁用样式)boolfalse
Readonly是否只读(可聚焦但不接受输入)boolfalse
ShowCount是否在右下角显示字数统计boolfalse
Maxlength最大字符数;超出时截断新输入,showCount 时作为分母int?null

令牌对照 ​

令牌用途
textarea.paddingVertical / paddingHorizontal内边距
textarea.fontSize字号
textarea.borderRadius / borderWidth圆角与失焦描边宽度
textarea.focusRingWidth / color.focus聚焦描边宽度与颜色
textarea.countFontSize / color.text.secondary字数统计字号/颜色
textarea.minHeight最小高度(行数推算结果不小于它)
color.background.default / color.text.primary容器底/文字色
color.text.placeholder占位文字色
color.border.base失焦描边色
color.disabled.{bg,text}禁用态底/文字
typography.lineHeight.primary行高(按 rows 推算高度)
typography.fontFamily国风衬线字体栈

黄金用例对照 ​

cases/textarea.json 的 6 条断言与 xUnit 测试的对应关系(tests/LhTextareaTests.cs):

case id断言本地测试
input-emits-onvaluechange输入触发 onValueChangeInput_Emits_OnValueChange
disabled-blocks-input禁用态不触发且呈现禁用样式Disabled_Blocks_Input
showcount-renders-count「当前/最大」取 countFontSize 令牌ShowCount_Renders_Count
showcount-without-maxlength-renders-length-only无 maxlength 只显示长度ShowCount_Without_Maxlength_Renders_Length_Only
focus-uses-focus-token聚焦描边取 focus 令牌Focus_Uses_Focus_Token
maxlength-truncates-input超出 maxlength 截断Maxlength_Truncates_Input

另有暗色专项:Dark_Colors_Come_From_Dark_Tokens / Dimensions_Are_Identical_In_Dark_Mode。 运行:cd lh-ui-windows && dotnet test。