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

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

重要的 API

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

例如,如果文本框中仅用于输入一个 4 位数的 PIN,请将 InputScope 属性设置为 Number。 这将通知系统显示数字键盘布局,以便于用户输入 PIN。

重要

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

更改文本控件的输入范围

应用可用的输入范围是 InputScopeNameValue 枚举的成员。 可以将TextBoxRichEditBoxInputScope 属性设置为以下值之一。

重要

PasswordBox 上的 InputScope 属性仅支持 Password 和 NumericPin 值。 其他任何值都将被忽略。

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

更改 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 - 为文本控件启用文本预测时,系统将显示可能开始键入的单词列表。 可以从列表中选择,这样就不必键入整个单词。 默认启用文本预测。

    如果输入范围不是 Default,则文本预测可能会被禁用,即使 IsTextPredictionEnabled 属性为 true。 有关更多信息,请参见本主题中后面的表。

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

适用于 Windows 的触摸键盘索引

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

提示

通过按 “&123” 键更改为数字和符号布局和按 “abcd” 键更改为字母布局,可以在字母布局和数字和符号布局之间切换大多数触摸键盘。

默认

<TextBox InputScope="Default"/>

默认 Windows 触摸键盘。

Default Windows touch keyboard

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

CurrencyAmountAndSymbol

<TextBox InputScope="CurrencyAmountAndSymbol"/>

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

Windows touch keyboard for currency

  • 包含向左翻页/向右翻页键以显示更多的符号
  • 拼写检查:默认开启,可禁用
  • 自动更正:默认开启,可禁用
  • 自动大写:始终禁用
  • 文本预测:默认开启,可禁用

URL

<TextBox InputScope="Url"/>

Windows touch keyboard for URLs

  • 包括“.com”键和 “”go key键(“转到”)键。 长按“.com”键可以显示其他选项(.org、.net 以及特定于区域的后缀)
  • 包括“;”、“-”和“/”键
  • 拼写检查:默认关闭,可启用
  • 自动更正:默认关闭,可启用
  • 自动大写:默认关闭,可启用
  • 文本预测:默认关闭,可启用

EmailSmtpAddress

<TextBox InputScope="EmailSmtpAddress"/>

Windows touch keyboard for email addresses

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

数字

<TextBox InputScope="Number"/>

Windows touch keyboard for numbers

  • 拼写检查:默认开启,可禁用
  • 自动更正:默认开启,可禁用
  • 自动大写:始终禁用
  • 文本预测:默认开启,可禁用

TelephoneNumber

<TextBox InputScope="TelephoneNumber"/>

Windows touch keyboard for telephone numbers

  • 拼写检查:默认开启,可禁用
  • 自动更正:默认开启,可禁用
  • 自动大写:始终禁用
  • 文本预测:默认开启,可禁用

<TextBox InputScope="Search"/>

Windows touch keyboard for search

  • 包括“搜索”键,而不是“输入”
  • 拼写检查:默认开启,可禁用
  • 自动更正:默认开启,可禁用
  • 自动大写:始终禁用
  • 文本预测:默认开启,可禁用

SearchIncremental

<TextBox InputScope="SearchIncremental"/>

Windows touch keyboard for incremental search

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

Formula

<TextBox InputScope="Formula"/>

Windows touch keyboard for formula

  • 包括“=”键
  • 还包括“%”、“$”和“+”键。
  • 拼写检查:默认开启,可禁用
  • 自动更正:默认开启,可禁用
  • 自动大写:始终禁用
  • 文本预测:默认开启,可禁用

聊天

<TextBox InputScope="Chat"/>

Default Windows touch keyboard

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

NameOrPhoneNumber

<TextBox InputScope="NameOrPhoneNumber"/>

Default Windows touch keyboard

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