В приложении WPF у меня есть элемент управления, полученный из TextBox, следующим образом:
public class SelectableTextBlock : TextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
e.Handled = false;
}
}
Метод OnKeyDown не вызывается при вводе пробела в TextBox и при нажатии клавиши Backspace, но запускается для другого ввода, включая обычные печатаемые символы (например, «a») и клавиши-модификаторы (например,).
Я использую этот элемент управления с IsReadOnly, установленным в true, чтобы я мог отображать выбираемый, не редактируемый текст. Элемент управления, используемый в DataGrid WPFToolkit, и я хочу, чтобы события KeyDown распространялись вверх по сетке данных, даже если у SelectableTextBlock есть фокус, поэтому я использую пользовательский элемент управления, чтобы явно пометить событие как необработанное.
Проблема в том, что событие даже не попадает под мой контроль определенных ключей. Я не могу просто использовать OnPreviewKeyDown в DataGrid, чтобы обойти это, так как я хочу, чтобы другие элементы управления, используемые в сетке данных, поглощали событие KeyDown пространства.
Кто-нибудь знает, как я могу получить событие KeyDown для распространения пробела?
Спасибо.