C# WinUI 3アプリを作っていく途中で、調べたことを忘録的に投稿します。今回はWinUI3プロジェクトで[AutoSuggestBox]コントロールに入力する際に、英数字入力にする方法です。
既定値はIME変換可能
[AutoSuggestBox]コントロールは、キーワードから用意した候補リストを表示してユーザーに選択させる表示が可能です。
こんな感じで、入力したテキストに該当する候補を一覧に表示して、ユーザーに選択する機能がアプリに追加できます。
入力するテキストボックスは[TextBox]コントロールになっているので、既定値ではIMEによる[かな漢字変換]が可能になっています。
アプリによっては、英数字のみで入力して欲しい場合があります。
フォーカス時に日本語入力を無効
UWPやWinFormなどで用意されている[TextBox]コントロールには[ImeMode]プロパティがあり、IMEの挙動を変更できましたが、WinUI3の[TextBox]コントロールには、実装がありません。
WinUI3の場合は、[InputScope]で変更を行います。
具体的には[TextBox]コントロール(例では[AutoSuggestBox]コントロール)の[GotFocus]イベントを追加して、イベント内に次のコードを追加します。
private void AutoSuggestBox_GotFocus(object sender, RoutedEventArgs e)
{
InputScope inputScope = new InputScope();
InputScopeName scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.Password;
inputScope.Names.Add(scopeName);
((TextBox)e.OriginalSource).InputScope = inputScope;
}
[InputScopeNameValue]に[Password]を設定して入力を英数字のみに限定しています。
[InputScopeNameValue 列挙値]には、パスワードの他にもIMEを有効にする[Hiragana]などの値が用意されています。
まとめ
今回はWinUI3プロジェクトで[AutoSuggestBox]コントロールに入力する際に、英数字入力に限定する方法について紹介しました。
[AutoSuggestBox]コントロールの入力する部分は[TextBox]コントロールが利用されているため[InputScope]プロパティを利用して入力時のIMEを制御できます。
WinUI 3で[AutoSuggestBox]コントロールの入力時にIMEを無効にしたい人の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。