2009-03-25 7 views
4

In meinem WPF Datagrid erhalte ich den "Löschen" -Schlüssel, verarbeite ihn, und dann löscht das Datagrid selbst die Zeile von der UI, indem er weiterhin seinen eigenen Handler für den Löschschlüssel verarbeitet (was ich will).Wie kann ich in WPF den Tastendruck abbrechen, nachdem ich ihn mit PreviewKeyDown verarbeitet habe?

Aber jetzt will ich CTRL-S eine Suchleiste öffnen, was es tut, aber es geht auch auf leer aus der Zelle der Benutzer war, wenn er gedrückt CTRL-S, so ich suche eine Möglichkeit, dem Datagrid mitzuteilen, den Schlüssel abzubrechen, drücken Sie, damit es nicht auf dem Datagrid ausgeführt wird.

Wie kann ich einen Tastendruck wie folgt abbrechen?

XAML:

<toolkit:DataGrid x:Name="TheDataGrid" DockPanel.Dock="Bottom" 
        CanUserAddRows="False" 
        AlternatingRowBackground="#ddd" 
        CanUserSortColumns="true" 
        PreviewKeyDown="TheDataGrid_PreviewKeyDown" 
        AutoGenerateColumns="False" 
        RowEditEnding="TheDataGrid_RowEditEnding"> 

Code-Behind:

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

Antwort

12
e.Handled = true; 
1

In einer etwas anderen Situation, ich habe ein zweites Argument vom Typ PreviewKeyDownEventArgs, in welcher Situation des Lösung ist:

e.IsInputKey = true; 
Verwandte Themen