在开发Windows Phone应用时,一个非常通用的需求就是限定文本框的输入内容。最直接的办法是限定弹出的软键盘的类型。比如有些文本框只允许输入数字,那就弹出数字键盘,不让用户选择其他键盘。这样做的好处有两个:节省后台验证逻辑、方便用户交互。

要限定键盘类型,做法很简单,就是设置TextBox控件的InputScope属性。比如输入电话号码的文本框可以这样写:

<TextBox InputScope="Number" Name="txtPhoneNumber" />

这样弹出的文本框就是数字键盘:

所有的InputScope类型见下表:

翻译自MSDN:http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh393998%28v=vs.105%29.aspx

键盘 备注 InputScope
包括自动修正、建议和表情 Text
默认键盘

AddressCity, AddressCountryName, AddressCountryShortName, AddressStateOrProvince, AddressStreet*, AlphanumericFullWidth, AlphanumericHalfWidth, Bopomofo, DateDayName, DateMonthName, Default, FileName, FullFilePath, Hanja, Hiragana, KatakanaFullWidth, KatakanaHalfWidth, LogOnName, OneChar, Password, PersonalFullName, PersonalGivenName, PersonalMiddleName, PersonalNamePrefix, PersonalNameSuffix, Yomi

*当手机的语言设置为英语、法语、菲律宾语、马来语、印度尼西亚语以外的语言时,AddressStreet会弹出这种键盘。

包括@和.com键。按住.com键可以弹出其他选项(.org, .com, .edu, .net)

(译者注:好样的,没有.cn!.cn,人类的耻辱!)

EmailNameOrAddress, EmailSmtpAddress, EmailUserName

包括@和.com键。按住.com键可以弹出其他选项(.org, .com, .edu, .net)

按住“.”显示其他选项(- + & : . /)

Url
 按下123键切换到电话号码键盘。按住"."显示其他选项(- _ , .) NameOrPhoneNumber
包含数字和符号

AddressStreet*, CurrencyAmountAndSymbol, CurrencyChinese, PostalAddress, PostalCode, Time

*当手机的语言设置为英语、法语、菲律宾语、马来语、印度尼西亚语以外的语言时,AddressStreet会弹出这种键盘。

模仿电话键盘,按住.显示其他选项(, ( ) X .) 按住0输入+ TelephoneAreaCode, TelephoneCountryCode, TelephoneLocalNumber, TelephoneNumber
包括数字和.,按住.显示其他选项(. , -) CurrencyAmount, DateDay, DateMonth, DateYear, Digits, Number, NumberFullWidth, NumericPassword, TimeHour, TimeMinorSec

包括建议

(译者注,建议的意思类似于VS的智能提示)

Maps, Search
包括建议。按住=号显示其他选项(( = ) : < >)。按住&123切换到数字和符号键盘,为输入数字和公式而优化。 Formula
包括建议和表情,但是木有自动修正 Chat