En una aplicación WPF, tengo un control que he derivado de TextBox como esto:WPF: OnKeyDown() no ser llamado para tecla de espacio en el control derivado de WPF TextBox
public class SelectableTextBlock : TextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
e.Handled = false;
}
}
El método OnKeyDown no es se llama cuando se ingresa un espacio en el TextBox, ni cuando se pulsa Retroceso, pero se dispara para otra entrada, incluidos los caracteres imprimibles normales (por ejemplo, 'a') y las teclas modificadoras (por ejemplo).
Estoy usando este control con IsReadOnly establecido en verdadero para que pueda mostrar texto seleccionable, no editable. El control utilizado dentro de DataGrid de WPFToolkit, y quiero que los eventos KeyDown se propaguen por la cuadrícula de datos, incluso si el SelectableTextBlock tiene foco, por lo que estoy usando un control personalizado para marcar explícitamente el evento como no controlado.
El problema es que el evento ni siquiera está bajo mi control para ciertas teclas. No puedo usar OnPreviewKeyDown en DataGrid para evitar esto, ya que quiero que otros controles utilizados en la cuadrícula de datos traguen el espacio del evento KeyDown.
¿Alguien sabe cómo puedo obtener el evento KeyDown para que la tecla de espacio se propague?
Gracias.
Gracias por su respuesta, Wim. Parece un problema relacionado. Descubrí que el evento no se activa para los espacios, retrocede y elimino las teclas. Mientras que en su caso usted estaba tratando de detener la pulsación de la tecla de espacio manejada por el cuadro de texto y lo hizo manejando la vista previa, estoy tratando de permitir que el evento se convierta en controles padres para que esto no funcione para mí . Tengo una solución alternativa que maneja los eventos de pulsación de tecla y los establece para que sean manejados. Publicaré el código de interés general en una respuesta a mi pregunta original. Todavía creo que debe haber una mejor manera. Gracias, E. – Ergwun
Debería haber leído: "Tengo una solución alternativa que maneja los eventos de pulsación de tecla y los establece en * no administrado *." – Ergwun