入力スコープを使用してタッチ キーボードを変更する

ユーザーがタッチ キーボードまたはソフト入力パネル (SIP) を使用してデータを入力できるように、ユーザーが入力する必要があるデータの種類と一致するようにテキスト コントロールの入力範囲を設定できます。

重要な API

タッチ キーボードは、タッチ スクリーンを備えたデバイスでアプリを実行するときにテキスト入力に使用できます。 ユーザーが編集可能な入力フィールド ( TextBox や RichEditBox など) をタップすると、タッチ キーボードが呼び出されます。 ユーザーが入力するデータの種類に合わせてテキスト コントロールの 入力スコープ を設定することで、ユーザーがアプリにデータを入力する時間を大幅に短縮し、簡単にすることができます。 入力スコープは、コントロールで想定されるテキスト入力の種類に関するヒントをシステムに提供するため、システムは入力の種類に特化したタッチ キーボード レイアウトを提供できます。

たとえば、テキスト ボックスを使用して 4 桁の PIN を入力する場合は、 InputScope プロパティを Number に設定します。 これにより、システムにキーパッドのレイアウトが表示されます。これにより、ユーザーが PIN を簡単に入力できるようになります。

Important

  • この情報は SIP にのみ適用されます。 Windows の簡単操作オプションで使用できるハードウェア キーボードやスクリーン キーボードには適用されません。
  • 入力スコープによって入力検証が実行されることはありません。また、ユーザーがハードウェア キーボードやその他の入力デバイスを介して入力を提供することを妨げません。 必要に応じて、コード内の入力を検証する必要があります。

テキスト コントロールの入力スコープの変更

アプリで使用できる入力スコープは 、InputScopeNameValue 列挙体のメンバーです。 TextBox または RichEditBox の InputScope プロパティを、これらの値のいずれかに設定できます。

Important

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)}
};

テキスト予測、スペル チェック、自動修正

TextBox コントロールと RichEditBox コントロールには、SIP の動作に影響を与えるいくつかのプロパティがあります。 ユーザーに最適なエクスペリエンスを提供するには、タッチを使用してこれらのプロパティがテキスト入力にどのように影響するかを理解することが重要です。

  • IsSpellCheckEnabled - テキスト コントロールに対してスペル チェックが有効になっている場合、コントロールはシステムのスペル チェック エンジンと対話して、認識されない単語をマークします。 単語をタップすると、修正候補の一覧が表示されます。 スペル チェックは既定で有効になっています。

    Default 入力スコープの場合、このプロパティでは、文の最初の単語の自動大文字化と、入力時の単語の自動修正も有効になります。 これらの自動修正機能は、他の入力スコープで無効になっている可能性があります。 詳細については、このトピックの後半の表を参照してください。

  • IsTextPredictionEnabled - テキスト コントロールに対してテキスト予測が有効になっている場合、入力を開始している可能性のある単語の一覧が表示されます。 単語全体を入力する必要がないように、一覧から選択できます。 テキスト予測は既定で有効になっています。

    IsTextPredictionEnabled プロパティが trueの場合でも、入力スコープが Default以外の場合は、テキスト予測が無効になる可能性があります。 詳細については、このトピックの後半の表を参照してください。

  • PreventKeyboardDisplayOnProgrammaticFocus—このプロパティが trueの場合、テキスト コントロールにフォーカスがプログラムによって設定されているときに、システムが SIP を表示しないようにします。 代わりに、ユーザーがコントロールを操作する場合にのみ、キーボードが表示されます。

Windows 用タッチ キーボード インデックス

次の表は、一般的な入力スコープ値の Windows ソフト入力パネル (SIP) レイアウトを示しています。 IsSpellCheckEnabled プロパティと IsTextPredictionEnabled プロパティによって有効になっている機能に対する入力スコープの効果が、入力スコープごとに一覧表示されます。 これは、使用可能な入力スコープの包括的な一覧ではありません。

ヒント

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"/>

URL用のWindowsタッチキーボード

  • .com と go キー (Go) キーが含まれます。 .comキーを長押しして、追加のオプション(.org、.net、およびリージョン固有のサフィックス)を表示します。
  • 、、-、そして / キーが含まれます。
  • スペル チェック: 既定ではオフ、有効にできます
  • 自動修正: 既定ではオフ、有効にできます
  • 自動大文字化: 既定ではオフ、有効にできます
  • テキスト予測: 既定ではオフ、有効にできます

電子メールSMTPアドレス

<TextBox InputScope="EmailSmtpAddress"/>

Windows タッチ キーボード は電子メールアドレス 用です

  • @キーと.com キーが含まれます。 .comキーを長押しして、追加のオプション(.org、.net、およびリージョン固有のサフィックス)を表示します。
  • _ キーと - キーを含む
  • スペル チェック: 既定ではオフ、有効にできます
  • 自動修正: 既定ではオフ、有効にできます
  • 自動大文字化: 既定ではオフ、有効にできます
  • テキスト予測: 既定ではオフ、有効にできます

Number

<TextBox InputScope="Number"/>

数値用の Windows タッチ キーボード

  • スペル チェック: 既定ではオン、無効にできます
  • 自動修正: 既定ではオン、無効にできます
  • 自動大文字化: 常に無効
  • テキスト予測: 既定ではオン、無効にできます

電話番号

<TextBox InputScope="TelephoneNumber"/>

電話番号用の Windows タッチ キーボード

  • スペル チェック: 既定ではオン、無効にできます
  • 自動修正: 既定ではオン、無効にできます
  • 自動大文字化: 常に無効
  • テキスト予測: 既定ではオン、無効にできます

<TextBox InputScope="Search"/>

Windows タッチ キーボード を検索 用にする

  • Search キーが Enter キーの代わりに含まれます
  • スペル チェック: 既定ではオン、無効にできます
  • 自動修正: 既定ではオン、無効にできます
  • 自動大文字化: 常に無効
  • テキスト予測: 既定ではオン、無効にできます

インクリメンタル検索

<TextBox InputScope="SearchIncremental"/>

Windowsタッチキーボードでインクリメンタル検索用

  • 既定の と同じレイアウト
  • スペル チェック: 既定ではオフ、有効にできます
  • 自動修正: 常に無効
  • 自動大文字化: 常に無効
  • テキスト予測: 常に無効

計算式

<TextBox InputScope="Formula"/>

の数式 用の Windows タッチ キーボード

  • = キーを含む
  • また、 %、 $、および + キーも含まれます
  • スペル チェック: 既定ではオン、無効にできます
  • 自動修正: 既定ではオン、無効にできます
  • 自動大文字化: 常に無効
  • テキスト予測: 既定ではオン、無効にできます

Chat

<TextBox InputScope="Chat"/>

既定の Windows タッチ キーボード

  • 既定の と同じレイアウト
  • スペル チェック: 既定ではオン、無効にできます
  • 自動修正: 既定ではオン、無効にできます
  • 自動大文字化: 既定ではオン、無効にできます
  • テキスト予測: 既定ではオン、無効にできます

名前または電話番号

<TextBox InputScope="NameOrPhoneNumber"/>

既定の Windows タッチ キーボード

  • 既定の と同じレイアウト
  • スペル チェック: 既定ではオフ、有効にできます
  • 自動修正: 既定ではオフ、有効にできます
  • 自動大文字化: 既定ではオフ、有効にできます (各単語の最初の文字は大文字です)
  • テキスト予測: 既定ではオフ、有効にできます