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 内で使用されるコントロール。SelectableTextBlock にフォーカスがある場合でも、KeyDown イベントをデータ グリッドに伝達する必要があるため、カスタム コントロールを使用してイベントを明示的に未処理としてマークしています。
問題は、イベントが特定のキーの制御にさえ達していないことです。DataGrid で OnPreviewKeyDown を使用してこれを回避することはできません。これは、データ グリッドで使用される他のコントロールで Space KeyDown イベントを飲み込む必要があるためです。
スペースキーが伝播するための KeyDown イベントを取得する方法を知っている人はいますか?
ありがとう。