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