2009-03-25 15 views
4

私の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; 
    } 
} 

答えて

12
e.Handled = true; 
1

、I型PreviewKeyDownEventArgsの第2引数を持っている状況でソリューションは:

e.IsInputKey = true; 
関連する問題