Quiero mostrar una selección en un WPF TextBox incluso cuando no está enfocado. ¿Cómo puedo hacer esto?¿Cómo mantener la selección de WPF TextBox cuando no está enfocado?
Respuesta
He usado esta solución para un RichTextBox, pero supongo que también funcionará para un cuadro de texto estándar. Básicamente, necesita manejar el evento LostFocus y marcarlo como manejado.
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;
}
El TextBox no se dará cuenta de que perdió el foco y aún mostrará la selección resaltada.
No estoy usando el enlace de datos en este caso, por lo que es posible que esto arruine el enlace bidireccional. Es posible que tenga que forzar el enlace en su controlador de eventos LostFocus. Algo como esto:
Binding binding = BindingOperations.GetBinding(this, TextProperty);
if (binding.UpdateSourceTrigger == UpdateSourceTrigger.Default ||
binding.UpdateSourceTrigger == UpdateSourceTrigger.LostFocus)
{
BindingOperations.GetBindingExpression(this, TextProperty).UpdateSource();
}
Otra opción es definir un ámbito de foco separada en XAML para mantener la selección en el primer cuadro de texto.
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBox Grid.Row="0" Text="Text that does not loose selection."/>
<StackPanel Grid.Row="1" FocusManager.IsFocusScope="True">
<TextBox Text="Some more text here." />
<Button Content="Run" />
<Button Content="Review" />
</StackPanel>
</Grid>
public class CustomRichTextBox : RichTextBox
{
protected override void OnLostFocus(RoutedEventArgs e)
{
}
}
me encontré con que las sugerencias enumeradas (añadir un manejador LostFocus, definiendo un FocusScope) a no funcionar, pero yo he venido a través del código que aparece aquí: http://naracea.com/2011/06/26/selection-highlight-and-focus-on-wpf-textbox/, que crea un Adorner personalizado que pone de relieve la texto cuando no está enfocado.
- 1. Establecer ListBoxItem.IsSelected cuando el niño TextBox está enfocado
- 2. TextBox - ¿Puedo mantener la selección resaltada cuando pierde el foco?
- 3. WPF TextBox ¿Borde cuando está seleccionado?
- 4. WPF TextBox no acepta la entrada cuando está en ElementHost en Window Forms
- 5. ¿Responder al teclado cuando no está enfocado? (C#, Vista)
- 6. WPF TextBox no rellenará StackPanel
- 7. Anulando color de fondo de ListBoxItem cuando no está enfocado (.NET 4.5)
- 8. Multilínea para WPF TextBox
- 9. WPF TextBox con SpellCheck.IsEnabled = "Verdadero" - ¿No está ocurriendo un SpellChecking?
- 10. Enlace de datos no se actualiza cuando TextBox está vacío
- 11. WPF TextBox Validation
- 12. WPF TextBox Wrapping
- 13. wpf textbox textwrapping
- 14. WPF: cómo detener TextBox de autosizing?
- 15. WPF Textbox TAB espacios
- 16. cómo mantener un elemento enfocado en C# listview?
- 17. Hacer que la aplicación OSX responda al primer clic del mouse cuando no está enfocado
- 18. WPF TextBox Intercepting RoutedUICommands
- 19. WPF TextBox Stretching
- 20. Cómo forzar un evento TextChanged en un WPF TextBox y mantener el foco?
- 21. AutoComplete TextBox en WPF
- 22. WPF: TextBox con ProgressBar
- 23. WPF TextBox Enlace con formato
- 24. valor de TextBox de WPF no cambia en OnPropertyChanged
- 25. Backbone.js - ¿Agregar eventos de selección cuando la vista está activa?
- 26. ¿Cómo hacer un WPF TextBox PassThrough ApplicationCommands?
- 27. botón Enviar no enfocado aunque tabindex está configurado correctamente
- 28. ¿Cómo simulo la entrada de texto a un WPF TextBox?
- 29. ¿Cómo se puede saber qué panel de Tmux está enfocado?
- 30. WPF TextBox y Comportamiento de desplazamiento
Esto funcionó! ¡Gracias! –
+1 Buena solución: me ayudó a crear una función de búsqueda ... Thx – reSPAWNed
Esto funciona principalmente, pero se rompe al desplazarse en RichTextBoxes no enfocados con selecciones en ellos: el resaltado de selección no se mueve con el texto. – Cameron