1

ユーザーが入力している間に TextPrediction をオンまたはオフにしたい RichEditBox があります。これは私が試しているコードですが、うまくいきません。変更を表示するには、キーボードを再起動/再起動する必要があります。

private void PostRichEditBox_SelectionChanged(object sender, RoutedEventArgs e)
{
     if(somecondition)
     {
           Searchterm.Text = mentionText;
           var scope = new InputScope();
           var inputScopeName = new InputScopeName { NameValue = InputScopeNameValue.NameOrPhoneNumber };

           scope.Names.Add(inputScopeName);

           PostRichEditBox.InputScope = scope;
           PostRichEditBox.IsTextPredictionEnabled = true;
      }
      else
      {
           var scope = new InputScope();
           var inputScopeName = new InputScopeName { NameValue = InputScopeNameValue.Chat };

           scope.Names.Add(inputScopeName);

           PostRichEditBox.InputScope = scope;

           PostRichEditBox.IsTextPredictionEnabled = false;
       }
}

Rudy Huyn の 6tag は '@' が入力されたときにこれを行い、キーボード上のテキスト予測の代わりに友人の提案のリストを表示するため、これが実行できることを私は知っています。どうやってこれをやっているのかツイッターで聞いてみた。彼はinputmodeを変更することで答えただけです(inputscopeを意味していたと思います)。どうすればいいですか?

4

1 に答える 1

0

予測をオフにしても予測バーが消えないためです。PredictionBar を更新するには、キーボードを閉じて再度開く必要があるため、いくつかの変更を加えました。私は今、UserControl に焦点を当ててから、RichEditBox に戻ります。また、キーボードが決して折りたたまれないため、UX に関してはそれほど目立ちません。

if (PostRichEditBox.IsTextPredictionEnabled)
                {
                   this.Focus(Windows.UI.Xaml.FocusState.Keyboard);
                    var scope = new InputScope();
                    var inputScopeName = new InputScopeName { NameValue = InputScopeNameValue.NameOrPhoneNumber };

                    scope.Names.Add(inputScopeName);

                    PostRichEditBox.InputScope = scope;
                    PostRichEditBox.IsTextPredictionEnabled = false;
                    PostRichEditBox.Focus(Windows.UI.Xaml.FocusState.Keyboard);
                 }
于 2015-07-27T12:33:29.723 に答える