用途
SfMaskedTextBox 是 Syncfusion 提供的 WinUI 输入控件,用于在 WinUI 3 桌面应用(.NET 5+)中实现带格式约束和校验的文本输入。它通过掩码模式限制用户可输入的字符与格式,并支持错误提示,适合需要固定或规则化输入格式的表单场景。
主要能力
- 掩码类型:支持 Simple(固定长度)和 RegEx(可变长度)两种掩码类型。
- 简单掩码:内置元素包括 0(数字)、L(字母)、A(字母数字)等,用于构建固定格式输入。
- 正则掩码:支持完整正则表达式模式,用于复杂校验。
- 提示字符:可自定义空掩码位置的占位字符,默认 '_'。
- 值格式化:通过 ValueMaskFormat 控制值的呈现方式,包括 IncludeLiterals、IncludePrompt、ExcludePromptAndLiterals 等选项,并影响剪贴板复制与粘贴行为。
- 错误指示:内置错误类型(None、Default、Warning、Information、Critical、Success),也可使用 Custom 类型配合 CustomErrorIcon、CustomErrorBorderBrush 和 ErrorContent 自定义图标、边框颜色与提示内容。
- 标题与描述:Header、HeaderTemplate 和 Description 属性用于在控件上方显示标签、在下方显示帮助文本。
- 事件:ValueChanging(变更前,可通过 Cancel 阻止无效输入)和 ValueChanged(变更后)用于实时校验。
使用方式
控件位于命名空间 Syncfusion.UI.Xaml.Editors,NuGet 包为 Syncfusion.Editors.WinUI。可在 XAML 或代码隐藏中创建控件,设置 Mask、MaskType、PromptChar、Value、ValueMaskFormat、ErrorType 等属性,并绑定 ValueChanging 或 ValueChanged 事件处理校验逻辑。
示例(电话号码输入与校验):
<syncfusion:SfMaskedTextBox Width="200" Header="Phone Number" MaskType="Simple" Mask="(000) 000-0000" PromptChar="#" ErrorType="Warning" Description="Enter your 10-digit phone number" ValueChanging="OnPhoneNumberChanging" />
private void OnPhoneNumberChanging(object sender, MaskedTextBoxValueChangingEventArgs e) { var maskedTextBox = sender as SfMaskedTextBox; maskedTextBox.ErrorType = e.IsValid ? ErrorType.Success : ErrorType.Warning; }
常见模式包括:日期输入(Mask="00/00/0000")、邮箱正则校验(MaskType="RegEx")、产品密钥大写转换(Mask=">AAAAA-AAAAA-AAAAA-AAAAA")、自定义错误图标与边框、信用卡格式化显示并返回原始值(ValueMaskFormat="ExcludePromptAndLiterals")。
适用场景
- 电话号码、邮箱、日期、产品密钥、SSN、信用卡、IP 地址等格式化输入。
- 需要实时校验并显示错误图标的表单。
- 需要自定义错误样式或提示消息的输入字段。
- 需要控制显示值与原始值差异(如格式化显示、原始值提交)的场景。
限制
资料未提供该控件的收费、价格、平台兼容性细节、性能数据或与其他控件的对比信息。部分属性(如 HeaderTemplate、CustomErrorIcon)的具体用法需参考对应文档。正则掩码在 XAML 中需转义特殊字符(如 \. 表示字面点号)。