I had a similiar problem. You should be able to do something like this:
Add this to your window constructor:
CommandManager.AddPreviewExecutedHandler(myDataGrid, new ExecutedRoutedEventHandler(MyPreviewDeleteCommandHandler));
And define your command handler:
private void MyPreviewDeleteCommandHandler(object sender, ExecutedRoutedEventArgs e)
if (e.Command == DataGrid.DeleteCommand)
// If you set e.Handled=true here, the delete command will be suppressed..
This method will not be triggered when using the delete key while editing.