我想在WPF文本框中显示一个选择,即使它不在焦点上。我怎样才能做到这一点?

最佳答案

我已经为RichTextBox使用了此解决方案,但我认为它也可以用于标准文本框。基本上,您需要处理LostFocus事件并将其标记为已处理。

  protected void MyTextBox_LostFocus(object sender, RoutedEventArgs e)
  {
     // When the RichTextBox loses focus the user can no longer see the selection.
     // This is a hack to make the RichTextBox think it did not lose focus.
     e.Handled = true;
  }

TextBox不会意识到它失去了焦点,仍然会显示突出显示的选择。

在这种情况下,我不使用数据绑定(bind),因此这可能会弄乱双向绑定(bind)。您可能必须在LostFocus事件处理程序中强制绑定(bind)。像这样:
     Binding binding = BindingOperations.GetBinding(this, TextProperty);
     if (binding.UpdateSourceTrigger == UpdateSourceTrigger.Default ||
         binding.UpdateSourceTrigger == UpdateSourceTrigger.LostFocus)
     {
        BindingOperations.GetBindingExpression(this, TextProperty).UpdateSource();
     }

10-08 02:19