1

我有一个 RichEditBox,我想在用户输入时打开和关闭 TextPrediction。这是我正在尝试的代码,但它不起作用。它需要重新启动/重新打开键盘以显示更改。

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 会在输入“@”时执行此操作,然后它会显示朋友建议列表来代替键盘上的文本预测。我在推特上问他他是怎么做到的。他只是通过更改输入模式来回答(我认为他的意思是输入范围)。我该怎么做呢?

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 回答