Я думаю, что самый простой способ - оставить поведение datagrid в одиночку, он знает, что делает, и создать свой собственный элемент управления в шаблоне редактирования. Давайте назовем это (для справки) CustomTextBox. Пусть этот CustomTextBox будет делать то, что вам нравится, например отвечать только на клавишу F2 и т. Д. Таким образом, вы не создаете странные поведения в сетке данных и не инкапсулируете пользовательские поведения в свой пользовательский элемент управления.
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding SomeProperty}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<yourNamespace:CustomTextBox DataContext="{Binding SomeProperty}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>