使用输入范围更改触摸键盘

若要帮助用户使用触摸键盘或软输入面板(SIP)输入数据,可以设置文本控件的输入范围,以匹配用户应输入的数据类型。

重要 API

当应用在具有触摸屏的设备上运行时,触摸键盘可用于文本输入。 当用户点击可编辑的输入字段(如 TextBoxRichEditBox)时,将调用触摸键盘。 通过将文本控件的 输入范围 设置为与预期用户输入的数据类型匹配,可以让用户更快地更轻松地在应用中输入数据。 输入范围向系统提供有关控件预期的文本输入类型的提示,以便系统可以为输入类型提供专用的触摸键盘布局。

例如,如果文本框仅用于输入 4 位 PIN,请将 InputScope 属性设置为 Number。 这指示系统显示数字键盘布局,以便于用户更容易输入 PIN。

重要

  • 此信息仅适用于 SIP。 它不适用于 Windows 轻松访问选项中提供的硬件键盘或屏幕键盘。
  • 输入范围不会导致执行任何输入验证,并且不会阻止用户通过硬件键盘或其他输入设备提供任何输入。 你仍负责根据需要验证代码中的输入。

更改文本控件的输入范围

您的应用中可用的输入范围是InputScopeNameValue 枚举的成员。 可以将 TextBoxInputScope 属性或 RichEditBox 设置为其中一个值。

重要

PasswordBox 上的 InputScope 属性仅支持 PasswordNumericPin 值。 将忽略任何其他值。

在这里,更改多个文本框的输入范围,以匹配每个文本框的预期数据。

更改 XAML 中的输入范围

  1. 在页面的 XAML 文件中,找到要更改的文本控件的标记。

  2. InputScope 属性添加到标记,并指定与预期输入匹配的 InputScopeNameValue 值。

    下面是一些可能出现在常见客户联系人窗体上的文本框。 设置了 InputScope 后,一个具有适当布局以适应每个文本框数据的触摸键盘将显示。

    <StackPanel Width="300">
        <TextBox Header="Name" InputScope="Default"/>
        <TextBox Header="Email Address" InputScope="EmailSmtpAddress"/>
        <TextBox Header="Telephone Number" InputScope="TelephoneNumber"/>
        <TextBox Header="Web site" InputScope="Url"/>
    </StackPanel>
    

更改代码中的输入范围

  1. 在页面的 XAML 文件中,找到要更改的文本控件的标记。 如果未设置,请设置 x:Name 属性 ,以便可以在代码中引用控件。

    <TextBox Header="Telephone Number" x:Name="phoneNumberTextBox"/>
    
  2. 实例化一个新的 InputScope 对象。

    InputScope scope = new InputScope();
    
  3. 实例化新的 InputScopeName 对象。

    InputScopeName scopeName = new InputScopeName();
    
  4. InputScopeName 对象的 NameValue 属性设置为 InputScopeNameValue 枚举中的一个值。

    scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
    
  5. InputScopeName 对象添加到 InputScope 对象的 Names 集合。

    scope.Names.Add(scopeName);
    
  6. InputScope 对象设置为文本控件的 InputScope 属性的值。

    phoneNumberTextBox.InputScope = scope;
    

下面是全部代码。

InputScope scope = new InputScope();
InputScopeName scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
scope.Names.Add(scopeName);
phoneNumberTextBox.InputScope = scope;

相同的步骤可以压缩到此速记代码中。

phoneNumberTextBox.InputScope = new InputScope() 
{
    Names = {new InputScopeName(InputScopeNameValue.TelephoneNumber)}
};

文本预测、拼写检查和自动更正

TextBoxRichEditBox 控件具有影响 SIP 行为的多个属性。 若要为用户提供最佳体验,请务必了解这些属性如何使用触摸影响文本输入。

  • IsSpellCheckEnabled - 为文本控件启用拼写检查时,控件与系统的拼写检查引擎交互,以标记无法识别的单词。 可以点击一个单词以查看建议的更正列表。 默认情况下启用拼写检查。

    对于 默认 输入范围,此属性还允许在键入时自动大写句子中的第一个单词和自动更正单词。 在其他输入范围中,可能会禁用这些自动更正功能。 有关详细信息,请参阅本主题后面的表。

  • IsTextPredictionEnabled— 为文本控件启用文本预测时,系统将显示您可能开始输入的单词列表。 可以从列表中选择,这样就不必键入整个单词。 默认启用文本预测。

    如果输入范围不是 默认,则可能会禁用文本预测,即使 IsTextPredictionEnabled 属性为 true。 有关详细信息,请参阅本主题后面的表。

  • PreventKeyboardDisplayOnProgrammaticFocus— 当此属性 true时,它会阻止系统在以编程方式在文本控件上设置焦点时显示 SIP。 仅当用户与控件交互时,才会显示键盘。

适用于 Windows 的触摸键盘索引

这些表显示了常见输入范围值的 Windows 软输入面板 (SIP) 布局。 列出了 IsSpellCheckEnabledIsTextPredictionEnabled 属性在每个输入范围上启用功能的影响。 这不是可用输入范围的综合列表。

小窍门

可以通过按 &123 键切换到数字和符号布局,或按 abcd 键切换到字母布局,以在大多数触摸键盘上切换字母布局和数字符号布局。

违约

<TextBox InputScope="Default"/>

默认的 Windows 触摸键盘。

默认 Windows 触摸键盘

  • 拼写检查:如果 IsSpellCheckEnabled = 为 true,则启用;如果 IsSpellCheckEnabled = 为 false,则禁用。
  • 自动更正:如果 IsSpellCheckEnabled = true,则启用,如果 IsSpellCheckEnabled = false,则禁用
  • 自动大写:如果 IsSpellCheckEnabled = 为 true,则启用;如果 IsSpellCheckEnabled = 为 false,则禁用。
  • 文本预测:如果 IsTextPredictionEnabled = true,则启用;如果 IsTextPredictionEnabled = false,则禁用

货币金额和符号

<TextBox InputScope="CurrencyAmountAndSymbol"/>

默认数字和符号键盘布局。

用于货币 的 Windows 触摸键盘

  • 包括页面左/右键以显示更多符号
  • 拼写检查:默认情况下,可以禁用
  • 自动更正:默认情况下,可以禁用
  • 自动大写:始终禁用
  • 文本预测默认启用,可关闭。

网址

<TextBox InputScope="Url"/>

Windows 触摸键盘,用于网址

  • 包括 .comgo 键(Go)。 按住 .com 键以显示其他选项(.org.net 和特定于区域的后缀)
  • 包括 -/
  • 拼写检查:默认关闭,可以启用
  • 自动更正:默认关闭,可以启用
  • 自动大写:默认情况下关闭,可以启用
  • 文本预测:默认关闭,可以启用

电子邮件SMTP地址

<TextBox InputScope="EmailSmtpAddress"/>

电子邮件地址的 Windows 触摸键盘

  • @.com密钥包括在内。 按住 .com 键以显示其他选项(.org.net 和特定于区域的后缀)
  • 包括 _-
  • 拼写检查:默认关闭,可以启用
  • 自动更正:默认关闭,可以启用
  • 自动大写:默认情况下关闭,可以启用
  • 文本预测:默认关闭,可以启用

编号

<TextBox InputScope="Number"/>

Windows 触摸键盘,用于输入数字

  • 拼写检查:默认情况下,可以禁用
  • 自动更正:默认情况下,可以禁用
  • 自动大写:始终禁用
  • 文本预测默认启用,可关闭。

电话号码

<TextBox InputScope="TelephoneNumber"/>

Windows 触摸键盘,用于电话号码

  • 拼写检查:默认情况下,可以禁用
  • 自动更正:默认情况下,可以禁用
  • 自动大写:始终禁用
  • 文本预测默认启用,可关闭。

<TextBox InputScope="Search"/>

用于搜索的 Windows 触摸键盘

  • 包括 搜索 键,而不是 Enter
  • 拼写检查:默认情况下,可以禁用
  • 自动更正:默认情况下,可以禁用
  • 自动大写:始终禁用
  • 文本预测默认启用,可关闭。

SearchIncremental (增量搜索)

<TextBox InputScope="SearchIncremental"/>

用于增量搜索的 Windows 触摸键盘

  • 默认 相同的布局
  • 拼写检查:默认关闭,可以启用
  • 自动更正:始终禁用
  • 自动大写:始终禁用
  • 文本预测:始终禁用

公式

<TextBox InputScope="Formula"/>

用于公式 的 Windows 触摸键盘

  • 包括 = 密钥
  • 还包括%$+密钥
  • 拼写检查:默认情况下,可以禁用
  • 自动更正:默认情况下,可以禁用
  • 自动大写:始终禁用
  • 文本预测默认启用,可关闭。

聊天

<TextBox InputScope="Chat"/>

默认 Windows 触摸键盘

  • 默认 相同的布局
  • 拼写检查:默认情况下,可以禁用
  • 自动更正:默认情况下,可以禁用
  • 自动大写:默认开启,可以禁用
  • 文本预测默认启用,可关闭。

姓名或电话号码

<TextBox InputScope="NameOrPhoneNumber"/>

默认 Windows 触摸键盘

  • 默认 相同的布局
  • 拼写检查:默认关闭,可以启用
  • 自动更正:默认关闭,可以启用
  • 自动大写:默认情况下关闭,可以启用(每个单词的第一个字母都大写)
  • 文本预测:默认关闭,可以启用