使用輸入範圍變更觸控式鍵盤
為協助使用者使用觸控式鍵盤或螢幕輸入面板 (SIP) 輸入資料,您可以設定文字控制項的輸入範圍,使其符合使用者要輸入的資料類型。
重要 API
當您的應用程式在具備觸控式螢幕的裝置上執行時,可以使用觸控式鍵盤輸入文字。 當使用者點選可編輯的輸入欄位 (例如 TextBox 或 RichEditBox) 時,就會叫用觸控式鍵盤。 您可以設定文字控制項的輸入範圍,使其符合您預期使用者輸入的資料類型,讓使用者在您的應用程式中輸入資料時更加快速方便。 輸入範圍會提供控制項所預期之文字輸入類型的提示給系統,讓系統可以為該輸入類型提供專用的觸控式鍵盤配置。
例如,如果文字方塊只用來輸入 4 位數 PIN,請將 InputScope 屬性設定為 Number。 這會告訴系統顯示數字小鍵盤,方便使用者輸入 PIN。
重要
- 此資訊僅適用於 SIP。 不適用於硬體鍵盤或 Windows 輕鬆存取選項中提供的螢幕小鍵盤。
- 輸入範圍並不會導致執行任何輸入驗證,也不會防止使用者透過硬體鍵盤或其他輸入裝置提供任何輸入。 您仍然必須視需要在程式碼中驗證輸入。
變更文字控制項的輸入範圍
您的應用程式可用的輸入範圍是 InputScopeNameValue 列舉的成員。 您可以將 TextBox 或 RichEditBox 的 InputScope 屬性設定為這些值之一。
重要
PasswordBox 上的 InputScope 屬性僅支援 Password 和 NumericPin 值。 任何其他值都將忽略。
在這裡,您可以變更多個文字方塊的輸入範圍,以符合每個文字方塊的預期資料。
變更 XAML 中的輸入範圍
在頁面的 XAML 檔案中,找到要變更文字控制項的標記。
將 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>
變更程式碼中的輸入範圍
在頁面的 XAML 檔案中,找到要變更文字控制項的標記。 如果未設定,請設定 x:Name 屬性,以便參考程式碼中的控制項。
<TextBox Header="Telephone Number" x:Name="phoneNumberTextBox"/>
具現化新的 InputScope 物件。
InputScope scope = new InputScope();
具現化新的 InputScopeName 物件。
InputScopeName scopeName = new InputScopeName();
將 InputScopeName 物件的 NameValue 屬性設定為 InputScopeNameValue 列舉的值。
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
將 InputScopeName 物件加入 InputScope 物件的 Names 集合中。
scope.Names.Add(scopeName);
將 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)}
};
文字預測、拼字檢查和自動更正
TextBox 和 RichEditBox 控制項具有多個影響 SIP 行為的屬性。 為了為使用者提供最佳體驗,請務必了解這些屬性如何影響使用觸控的文字輸入。
IsSpellCheckEnabled - 當為文字控制項啟用拼字檢查時,該控制項將與系統的拼字檢查引擎互動,以標記無法辨識的單字。 您可以點擊某個單字來查看建議的更正清單。 預設會啟用拼字檢查。
對於預設輸入範圍,此屬性還可以自動將句子中的第一個單字大寫,並在您鍵入時自動修正單字。 這些自動更正功能可能在其他輸入範圍中停用。 如需詳細資訊,請參閱本主題稍後的資料表。
IsTextPredictionEnabled - 當為文字控制項啟用文字預測時,系統會顯示您可能開始鍵入的單字清單。 您可以從清單中進行選擇,這樣您就不必鍵入整個單字。 預設會啟用文字預測。
如果輸入範圍不是預設,則即使 IsTextPredictionEnabled 屬性為 True,也可能會停用文字預測。 如需詳細資訊,請參閱本主題稍後的資料表。
PreventKeyboardDisplayOnProgrammaticFocus - 當此屬性為 True,並以程式設計方式將焦點設定在文字控制項上時,它會阻止系統顯示 SIP。 相反地,只有當使用者與控制項互動時才顯示鍵盤。
Windows 觸控鍵盤索引
這些表格顯示了常見輸入範圍值的 Windows 軟體輸入面板 (SIP) 配置。 針對每個輸入範圍列出了輸入範圍對 IsSpellCheckEnabled 和 IsTextPredictionEnabled 屬性啟用功能的影響。 這不是可用輸入範圍的完整清單。
提示
您可以在大多數觸控鍵盤之間切換字母配置和數字和符號配置,方法是按 &123 鍵變更為數字和符號配置,然後按 abcd 鍵變更為字母配置。
預設
<TextBox InputScope="Default"/>
預設的 Windows 觸控鍵盤。
- 拼字檢查:如果 IsSpellCheckEnabled = true 則啟用,如果 IsSpellCheckEnabled = false 則停用
- 自動更正:如果 IsSpellCheckEnabled = true 則啟用,如果 IsSpellCheckEnabled = false 則停用
- 自動大寫:如果 IsSpellCheckEnabled = true 則啟用,如果 IsSpellCheckEnabled = false 則停用
- 文字預測:如果 IsTextPredictionEnabled = true 則啟用,如果 IsTextPredictionEnabled = false 則停用
CurrencyAmountAndSymbol
<TextBox InputScope="CurrencyAmountAndSymbol"/>
預設數字和符號鍵盤配置。
- 包括頁面左/右鍵以顯示更多符號
- 拼字檢查:預設為開啟,可停用
- 自動更正:預設為開啟,可停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可停用
Url
<TextBox InputScope="Url"/>
- 包括 .com 和 (Go) 鍵。 按住 .com 鍵可顯示其他選項 (.org、.net,和特定區域的尾碼)
- 包括 :、- 和 /鍵
- 拼字檢查:預設為關閉,可啟用
- 自動更正:預設為關閉,可啟用
- 自動大寫:預設為關閉,可啟用
- 文字預測:預設為關閉,可啟用
EmailSmtpAddress
<TextBox InputScope="EmailSmtpAddress"/>
- @包含和 .com 鍵。 按住 .com 鍵可顯示其他選項 (.org、.net,和特定區域的尾碼)
- 包括 _ 和 - 鍵
- 拼字檢查:預設為關閉,可啟用
- 自動更正:預設為關閉,可啟用
- 自動大寫:預設為關閉,可啟用
- 文字預測:預設為關閉,可啟用
數字
<TextBox InputScope="Number"/>
- 拼字檢查:預設為開啟,可停用
- 自動更正:預設為開啟,可停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可停用
TelephoneNumber
<TextBox InputScope="TelephoneNumber"/>
- 拼字檢查:預設為開啟,可停用
- 自動更正:預設為開啟,可停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可停用
搜尋
<TextBox InputScope="Search"/>
- 包括搜尋鍵而不是 Enter 鍵
- 拼字檢查:預設為開啟,可停用
- 自動更正:預設為開啟,可停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可停用
SearchIncremental
<TextBox InputScope="SearchIncremental"/>
- 與預設配置相同
- 拼字檢查:預設為關閉,可啟用
- 自動更正:一律停用
- 自動大寫:一律停用
- 文字預測:一律停用
公式
<TextBox InputScope="Formula"/>
- 包括 = 鍵
- 還包括 %、$ 和 + 鍵
- 拼字檢查:預設為開啟,可停用
- 自動更正:預設為開啟,可停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可停用
聊天
<TextBox InputScope="Chat"/>
- 與預設配置相同
- 拼字檢查:預設為開啟,可停用
- 自動更正:預設為開啟,可停用
- 自動大寫:預設為開啟,可停用
- 文字預測:預設為開啟,可停用
NameOrPhoneNumber
<TextBox InputScope="NameOrPhoneNumber"/>
- 與預設配置相同
- 拼字檢查:預設為關閉,可啟用
- 自動更正:預設為關閉,可啟用
- 自動大寫:預設為關閉,可啟用 (每個單字的第一個字母都大寫)
- 文字預測:預設為關閉,可啟用