WPF数据编辑器库附带的大多数文本编辑器(TextEdit子体)允许您在编辑期间使用掩码。掩码提供受限的数据输入和格式化的数据输出。
当输入的字符串需要匹配特定格式时,在编辑器中使用掩码非常有用。例如,文本编辑器应该接受24小时格式的日期/时间值或数字值。另一个例子是在编辑器中输入电话号码(最终用户只需输入数字,而在编辑时应自动跳过连字符)。使用屏蔽输入来支持这些和许多其他数据输入格式。
注意:
最终用户所做的更改将发布到BaseEdit。EditValue仅在输入验证成功后,否则,BaseEdit。EditValue属性包含其以前的有效值。
可以使用带有“mask”前缀的属性(例如TextEdit.MaskType、TextEdit.mask、TextEdit.MaskCulture等)定义编辑器的掩码设置。遮罩通常在编辑模式下使用。当编辑器未处于编辑模式时,如果文本编辑失败,也可以使用指定的掩码对其显示文本进行格式化。MaskUseAsDisplayFormat属性设置为true。如果此属性为false,则编辑器的显示文本将使用BaseEdit组合。显示模式下的DisplayFormatString格式。
IME在所有屏蔽编辑器中都被禁用。
使用Text属性指定编辑器的值时,该值为System。一串 类型以及数字和日期时间掩码类型可能应用不正确。要正确应用掩码设置,应使用EditValue属性指定编辑器的值。
注意:
以下文本编辑子体不支持屏蔽输入:ComboBoxEdit、LookUpEdit、MemoEdit、PopupColorEdit和PopupImageEdit。
WPF数据编辑器完全支持以下掩码类型。
数字的(Numeric)
当需要将输入限制为数值时,此掩码类型是最佳选择。使用simple指定掩码。NET框架格式字符串。如果需要将输入限制为货币值,可以指定一个字符的“c”掩码。不允许使用文字字符,并且掩码不允许小数点后超过两位数。最终用户将能够通过数字导航,并使用上下箭头或鼠标滚轮增加或减少其值。
日期时间(Date-Time)
此掩码类型与数字掩码有很多共同之处,用于日期时间值。也可以使用指定遮罩。NET Framework格式字符串与最终用户功能相同。它们包括在值部分(天、月、年、小时等)之间导航,以及使用键盘和鼠标滚轮进行增量值修改。
时间跨度(Time Span)
此掩码类型用于时间间隔值。也可以使用指定遮罩。NET Framework格式字符串与相同的最终用户功能相同。它们包括在值部分(天、小时、分钟等)之间导航,以及使用键盘和鼠标滚轮进行增量值修改。
简单面罩(Simple Masks)
当您需要输入有限长度的字符串(如电话号码、邮政编码、社保号码等)时,此掩码类型是最好的。使用字符序列指定掩码。一些字符用作数字或字母的占位符,而其他字符则是用于分隔值部分的文字。这种文字的一个例子是电话号码中的区号括号。
正则表达式掩码(Regular Expression Masks)
如果上面列出的掩码类型不满足您的业务需求,您可以使用没有限制的正则表达式——任何正则表达式都可以用作掩码。
Design-Time Enhancements
屏蔽编辑器允许您在设计时快速创建和自定义任何复杂的屏蔽功能。
掩码中的空值输入
设置BaseEdit。AllowNullInput属性设置为true,以允许在相应数据字段没有可用信息的情况下,在屏蔽编辑器中输入空值。要完成此操作,请按CTRL-D或CTRL-0。另一种方法是在编辑器中选择All,然后按DEL。
在值中包含掩码字符
使用简单或常规掩码类型时,可以指定编辑器的值中是否包含持续显示的掩码字符(文字)。换句话说,您可以控制这些字符是否出现在BaseEdit返回的值中。是否编辑属性值。要启用此行为,请设置TextEdit。MaskSaveLiteral属性设置为true。
#在遮罩中使用占位符
对于简单、常规和正则表达式掩码类型,编辑框中的占位符使用TextEdit确定的特殊字符表示。MaskPlaceHolder酒店。可以使用此属性更改默认占位符(“x”字符)。
通过设置TextEdit,可以隐藏正则表达式掩码类型的占位符。MaskShowPlaceHolders属性设置为false。
下图显示了一个空文本编辑器,其掩码设置为“CODE-\d{3}-NO-\d{3}”(掩码类型为RegEx):
MaskShowPlaceHolders属性设置为true;%1占位符“”符号用作占位符
MaskShowPlaceHolders属性设置为false
忽略编辑器中的空值
对于简单、常规和正则表达式掩码类型,请使用TextEdit。MaskIgnoreBlank地产有效。如果此属性设置为true,则空编辑器可能会失去焦点。如果编辑器的值仅部分完成,则在最终用户输入整个值或清除编辑框删除该值之前,无法从编辑器中移动焦点。
如果此属性设置为false,则在值完全完成之前,无法从编辑器中移动焦点。
编辑器中的错误由错误图标指示:
要在输入无效值时提供适当的响应,请处理BaseEdit。验证事件。
#自动完成
可以为正则表达式掩码类型启用自动完成功能。在此模式下,编辑器将尝试完成最终用户部分输入的值。使用文本编辑。MaskAutoComplete属性指定启用了哪个自动完成模式:
自动完成模式 描述
Strong :
每次最终用户键入字符时,编辑器都会确定是否可以自动填充以下占位符。如果在此位置只能插入特定字符,编辑器将自动显示此字符,并将插入符号移到该字符的右侧。
假设编辑掩码设置为“\R{MonthNames}”(编辑器将接受月份名称)。当最终用户在空编辑框中输入“M”字符时,第二个占位符将自动填充“a”字符,因为有两个月以“M”开头(三月和五月),并且在第二个位置都包含“a”。
如果按下“r”字符,编辑器将自动完成输入并显示“March”:
Optimistic:
当最终用户第一次在空编辑框中输入字符时,编辑器会自动用默认值填充以下所有占位符。对于只接受数值的占位符,默认为“0”字符。对于接受单词字符的占位符,“a”字符是默认字符。
假设掩码设置为“\R{MonthNames}”。输入“M”字符后,编辑器会自动插入“五月”月份(这是两个选项之间最短的变量——三月和五月):
例如,编辑掩码设置为\d{3}-\d{2}-\d{2}(电话号码模式)。在空编辑框中输入第一个字符(例如,“1”)时,以下占位符将自动填充默认值(“0”字符)并选中:
如果文本编辑。MaskAutoComplete属性设置为AutoCompleteType。默认情况下,编辑器将使用AutoCompleteType。在这种情况下,强自动完成模式。
#错误提示
设置文本编辑。MaskBeepOnError属性设置为true,以在最终用户尝试键入无效字符时启用蜂鸣。假设使用了数字类型的掩码。在这种情况下,每次最终用户尝试键入非数字字符时,编辑器都会发出哔哔声。
翻译来源: https://docs.devexpress.com/WPF/6945/controls-and-libraries/data-editors/common-features/masked-input