chuan 8bcec097d0 build: 添加 NuGet 包发布配置
- 设置 AvaloniaKeyboard 包版本为 0.1.0,并补充作者、描述、许可证及仓库信息
- 将中文 README 和键盘布局配图包含到 NuGet 包中
8bcec097d0 · 2026-10-27 11:37:32 +08:00
10 Commits
2026-10-27 11:37:32 +08:00
2026-10-27 11:34:20 +08:00

AvaloniaKeyboard

面向 Avalonia 桌面应用的虚拟键盘,支持触摸和鼠标操作。为 TextBox 启用后,获取焦点即可弹出,点击外部或按 Escape 关闭。同一应用的多个窗口共享一个自动弹出的键盘。

浅色主题 深色主题
浅色键盘 深色键盘

支持选区编辑、大小写切换、长按退格与光标移动、密码输入,以及物理键盘和屏幕键盘混用。键盘尺寸、按键间距和弹出位置均可配置。

快速接入

在应用中引用 AvaloniaKeyboard 项目,然后在 App.axaml 的现有应用主题之后添加键盘主题:

<Application.Styles>
  <KeyboardTheme />
</Application.Styles>

主题和控件已注册到 Avalonia 默认命名空间,可以直接使用。也支持独立命名空间,推荐前缀为 k:

<Window xmlns="https://github.com/avaloniaui"
        xmlns:k="https://avalonia.com/keyboard">
  <TextBox k:KeyboardInput.IsEnabled="True" />
</Window>

键盘跟随应用的浅色或深色主题。确认后默认关闭;将 KeyboardInput.ConfirmBehavior 设为 KeepOpen 可保持展开,设为 Next 可跳转到下一个已启用键盘的输入框。普通多行输入框的确认键用于换行。

键盘布局

通过 KeyboardInput.Layout 为不同输入框选择布局。

布局 说明
Letters 默认布局,字母上方常驻数字行,可切换到符号页
Symbols 数字、标点和符号
Numeric 集中排列数字,同时提供常用符号
NumericOnly 数字键盘,保留小数点、负号和编辑键
Alphanumeric 字母与数字,不提供空格和标点
NumericConstrained 带标题、范围提示和校验反馈的数字键盘
数字模式 字母与数字模式
数字键盘 字母与数字键盘

数值校验

选择整数或小数类型,并设置允许的输入范围:

<TextBox k:KeyboardInput.IsEnabled="True"
         k:KeyboardInput.Layout="NumericConstrained"
         k:KeyboardInput.NumericTitle="数量"
         k:KeyboardInput.NumericType="Integer"
         k:KeyboardInput.Minimum="0"
         k:KeyboardInput.Maximum="100" />

范围提示会自动生成。设置 KeyboardInput.IsNumericTypeVisible="False" 可隐藏类型名称。

数字键盘显示业务校验错误

点击确认时检查当前文本,不合法则在右侧显示原因并保持展开,方便继续修改。受限数字模式下,物理 Enter 使用相同的校验逻辑。

绑定的 ViewModel 可以通过 INotifyDataErrorInfo 提供业务错误,键盘会同步显示并阻止确认。示例中的数量字段额外要求输入偶数,可直接体验这一行为。自定义确认事件中也可以设置 CancelClose,阻止键盘自动关闭。

按键外观

可以直接设置字号、文字粗细、图标大小、描边及颜色:

<k:VirtualKeyboard KeyFontSize="28"
                   KeyLabelFontSize="18"
                   KeyFontWeight="SemiBold"
                   KeyIconSize="30"
                   KeyIconStrokeThickness="1.8"
                   KeyForeground="#172334"
                   FunctionKeyForeground="#172334"
                   ConfirmKeyForeground="#172334" />

自动弹出时,在输入框上设置同名的 k:KeyboardInput.KeyFontSize 等附加属性,也可在窗口或父容器上统一设置。修改后立即生效,未设置时使用浅色或深色主题的默认值。

运行示例

dotnet run --project src/AvaloniaKeyboard.Example

也可以在仓库根目录执行 just run。

项目基于 .NET 8 和 Avalonia 11.3.11。已验证 Windows 桌面及 Windows x64 Native AOT,Linux 和 macOS 尚需分别进行平台验证。

更多配置可参考示例代码,自动化测试的运行方式见测试说明。

S
Description
No description provided
Readme
357 KiB
Languages
C# 99.9%