In un'applicazione WPF, ho un controllo che ho derivato da TextBox simili:WPF: OnKeyDown() non venga richiamato per la chiave spazio nel controllo derivato da WPF TextBox
public class SelectableTextBlock : TextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
e.Handled = false;
}
}
Procedimento OnKeyDown non è chiamato quando si immette uno spazio nel TextBox, né quando si colpisce Backspace, ma si attiva per altri input inclusi normali caratteri stampabili (ad esempio 'a') e tasti modificatori (ad esempio).
Sto usando questo controllo con IsReadOnly impostato su true in modo da poter visualizzare testo selezionabile e non modificabile. Il controllo utilizzato in DataGrid di WPFToolkit, e voglio che gli eventi KeyDown si propaghino sulla griglia di dati, anche se il SelectableTextBlock è focalizzato, motivo per cui sto usando un controllo personalizzato per contrassegnare esplicitamente l'evento come non gestito.
Il problema è che l'evento non riesce nemmeno a controllarlo per determinati tasti. Non posso semplicemente utilizzare OnPreviewKeyDown nel DataGrid per aggirare questo, dal momento che voglio altri controlli utilizzati nella griglia di dati per ingoiare lo spazio KeyDown evento.
Qualcuno sa come posso far propagare l'evento KeyDown per lo Space Key?
Grazie.
Grazie per la risposta, Wim. Questo sembra un problema correlato. Ho scoperto che l'evento non è attivato per i caratteri spazio e il backspace e cancella la pressione dei tasti. Mentre nel tuo caso cercavi di fermare la pressione del tasto spazio gestita dalla casella di testo e lo facevo gestendo l'anteprima, sto tentando di far scoppiare l'evento ai controlli padre, quindi questo non funzionerebbe per me . Ho una soluzione alternativa che gestisce gli eventi di key down gestiti e li imposta a gestire. Pubblicherò il codice per l'interesse generale in una risposta alla mia domanda originale. Pensi ancora che ci debba essere un modo migliore. Grazie, E. – Ergwun
Che avrebbe dovuto leggere: "Ho una soluzione alternativa che gestisce gli eventi chiave in giù e li imposta su * non gestito *." – Ergwun