在 WPF 应用程序中,我有一个从 TextBox 派生的控件,如下所示:
public class SelectableTextBlock : TextBox
{
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
e.Handled = false;
}
}
OnKeyDown 方法在向 TextBox 输入空格时不会调用,也不会在按 Backspace 时调用,但会触发其他输入,包括正常的可打印字符(例如 'a')和修饰键(例如 )。
我使用这个控件并将 IsReadOnly 设置为 true,这样我就可以显示可选择的、不可编辑的文本。WPFToolkit 的 DataGrid 中使用的控件,我希望 KeyDown 事件能够向上传播数据网格,即使 SelectableTextBlock 具有焦点,这就是我使用自定义控件将事件显式标记为未处理的原因。
问题是事件甚至没有让我控制某些键。我不能只在 DataGrid 中使用 OnPreviewKeyDown 来解决这个问题,因为我确实希望数据网格中使用的其他控件能够吞下空间 KeyDown 事件。
有谁知道我怎样才能让空格键向上传播的 KeyDown 事件?
谢谢。