使用輸入範圍變更觸控式鍵盤

為協助使用者使用觸控式鍵盤或螢幕輸入面板 (SIP) 輸入資料,您可以設定文字控制項的輸入範圍,使其符合使用者要輸入的資料類型。

重要 API

當您的應用程式在具備觸控式螢幕的裝置上執行時,可以使用觸控式鍵盤輸入文字。 當使用者點選可編輯的輸入欄位 (例如 TextBoxRichEditBox) 時,就會叫用觸控式鍵盤。 您可以設定文字控制項的輸入範圍,使其符合您預期使用者輸入的資料類型,讓使用者在您的應用程式中輸入資料時更加快速方便。 輸入範圍會提供控制項所預期之文字輸入類型的提示給系統,讓系統可以為該輸入類型提供專用的觸控式鍵盤配置。

例如,如果文字方塊只用來輸入 4 位數 PIN,請將 InputScope 屬性設定為 Number。 這會告訴系統顯示數字小鍵盤,方便使用者輸入 PIN。

重要

  • 此資訊僅適用於 SIP。 不適用於硬體鍵盤或 Windows 輕鬆存取選項中提供的螢幕小鍵盤。
  • 輸入範圍並不會導致執行任何輸入驗證,也不會防止使用者透過硬體鍵盤或其他輸入裝置提供任何輸入。 您仍然必須視需要在程式碼中驗證輸入。

變更文字控制項的輸入範圍

您的應用程式可用的輸入範圍是 InputScopeNameValue 列舉的成員。 您可以將 TextBoxRichEditBoxInputScope 屬性設定為這些值之一。

重要

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 觸控鍵盤。

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

  • 包括 .comgo key (Go) 鍵。 按住 .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

  • 包括搜尋鍵而不是 Enter
  • 拼字檢查:預設為開啟,可停用
  • 自動更正:預設為開啟,可停用
  • 自動大寫:一律停用
  • 文字預測:預設為開啟,可停用

SearchIncremental

<TextBox InputScope="SearchIncremental"/>

Windows touch keyboard for incremental search

  • 預設配置相同
  • 拼字檢查:預設為關閉,可啟用
  • 自動更正:一律停用
  • 自動大寫:一律停用
  • 文字預測:一律停用

公式

<TextBox InputScope="Formula"/>

Windows touch keyboard for formula

  • 包括 =
  • 還包括 %$+
  • 拼字檢查:預設為開啟,可停用
  • 自動更正:預設為開啟,可停用
  • 自動大寫:一律停用
  • 文字預測:預設為開啟,可停用

聊天

<TextBox InputScope="Chat"/>

Default Windows touch keyboard

  • 預設配置相同
  • 拼字檢查:預設為開啟,可停用
  • 自動更正:預設為開啟,可停用
  • 自動大寫:預設為開啟,可停用
  • 文字預測:預設為開啟,可停用

NameOrPhoneNumber

<TextBox InputScope="NameOrPhoneNumber"/>

Default Windows touch keyboard

  • 預設配置相同
  • 拼字檢查:預設為關閉,可啟用
  • 自動更正:預設為關閉,可啟用
  • 自動大寫:預設為關閉,可啟用 (每個單字的第一個字母都大寫)
  • 文字預測:預設為關閉,可啟用