若要協助使用者使用觸控式鍵盤或軟體輸入面板 (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 — 當文字控制件啟用拼字檢查時,控件會與系統的拼字檢查引擎互動,以標記無法辨識的文字。 您可以點選一個字來查看建議的更正清單。 默認會啟用拼字檢查。
針對 Default 輸入範圍,此屬性也會在您輸入時自動將句子中的第一個單字大寫,以及自動更正單字。 這些自動更正功能可能會在其他輸入情境中停用。 如需詳細資訊,請參閱本主題稍後的數據表。
IsTextPredictionEnabled — 當文字控件啟用文字預測時,系統會顯示您可能開始輸入的文字清單。 您可以從清單中選取 ,因此不需要輸入整個單字。 默認會啟用文字預測。
如果輸入範圍不是 Default,即使 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,則為停用。
貨幣金額及符號
<TextBox InputScope="CurrencyAmountAndSymbol"/>
預設數位和符號鍵盤配置。
- 包含頁面左/右鍵以顯示更多符號
- 拼字檢查:預設為開啟,可以停用
- 自動更正:預設為開啟,可以停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可以停用
網址
<TextBox InputScope="Url"/>
- 包含 .com 和
(Go) 鍵。 按住 .com 鍵以顯示其他選項(.org、 .net 和區域特定後綴) - 包含 、、-和 / 鍵
- 拼字檢查:預設為關閉,可以啟用
- 自動更正:預設為關閉,可以啟用
- 自動大寫:預設為關閉,可以啟用
- 文字預測:預設為關閉,可以啟用
電子郵件SMTP地址
<TextBox InputScope="EmailSmtpAddress"/>
- @和.com鍵都包含在內。 按住 .com 鍵以顯示其他選項(.org、 .net 和區域特定後綴)
- 包含 _ 和 - 按鍵
- 拼字檢查:預設為關閉,可以啟用
- 自動更正:預設為關閉,可以啟用
- 自動大寫:預設為關閉,可以啟用
- 文字預測:預設為關閉,可以啟用
Number
<TextBox InputScope="Number"/>
- 拼字檢查:預設為開啟,可以停用
- 自動更正:預設為開啟,可以停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可以停用
電話號碼
<TextBox InputScope="TelephoneNumber"/>
- 拼字檢查:預設為開啟,可以停用
- 自動更正:預設為開啟,可以停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可以停用
搜尋
<TextBox InputScope="Search"/>
- 包含 搜尋 鍵,而不是 輸入 鍵
- 拼字檢查:預設為開啟,可以停用
- 自動更正:預設為開啟,可以停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可以停用
增量式搜索
<TextBox InputScope="SearchIncremental"/>
- 與 預設 版面配置相同
- 拼字檢查:預設為關閉,可以啟用
- 自動更正:一律停用
- 自動大寫:一律停用
- 文字預測:一律停用
Formula
<TextBox InputScope="Formula"/>
- 包含 = 鍵
- 也包含 %、$ 和 + 索引鍵
- 拼字檢查:預設為開啟,可以停用
- 自動更正:預設為開啟,可以停用
- 自動大寫:一律停用
- 文字預測:預設為開啟,可以停用
Chat
<TextBox InputScope="Chat"/>
- 與 預設 版面配置相同
- 拼字檢查:預設為開啟,可以停用
- 自動更正:預設為開啟,可以停用
- 自動大寫:預設為開啟,可以停用
- 文字預測:預設為開啟,可以停用
姓名或電話號碼
<TextBox InputScope="NameOrPhoneNumber"/>
- 與 預設 版面配置相同
- 拼字檢查:預設為關閉,可以啟用
- 自動更正:預設為關閉,可以啟用
- 自動大寫:預設為關閉,可以啟用(每個單字的第一個字母都會大寫)
- 文字預測:預設為關閉,可以啟用