私のWPF Datagridでは、「削除」キーを取得して処理した後、自分自身のハンドラを処理し続けることで、データグリッド自体がUIからその行を削除します。WPFでは、PreviewKeyDownを使ってキープレスを処理した後に、どのようにキー入力をキャンセルできますか?
しかし、今ではCTRL-Sが検索バーを開くことを望んでいますが、CTRL-Sを押したときにユーザーがいたセルを空白にしているので、探していますキーをキャンセルするようにDataGridに指示する方法は、それがDatagrid上で実行されないようにします。
どうすればこのようなキー入力をキャンセルできますか?
XAML:
<toolkit:DataGrid x:Name="TheDataGrid" DockPanel.Dock="Bottom"
CanUserAddRows="False"
AlternatingRowBackground="#ddd"
CanUserSortColumns="true"
PreviewKeyDown="TheDataGrid_PreviewKeyDown"
AutoGenerateColumns="False"
RowEditEnding="TheDataGrid_RowEditEnding">
コードビハインド:わずかに異なる状況で
private void TheDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.IsKeyDown(Key.LeftCtrl) && Keyboard.IsKeyDown(Key.S))
{
ShowSearchBar();
}
switch (e.Key)
{
case Key.Delete:
DeleteCustomer(sender, e);
break;
}
}