Search code examples
wpfwpfdatagrid

WPF DataGrid loses focus after row delete / cut


I have a DataGrid implemented in an MVVM/Prism application. The DataGrid supports Cut/Copy/Paste/Delete through a context menu and keyboard gestures.

I find that when a row is deleted/cut the entire DataGrid loses focus and keyboard focus moves to the last focused control.

Is there anyway to prevent this?

After removing a row I may want to re-paste into the DataGrid. Furthermore if the grid is empty there is no way at all for it to get keyboard focus. Clicking an empty grid does not give it focus.

Here is a similar question, but it doesn't solve the issue for me: DataGrid Looses Focus When Delete Key is Pressed


Solution

  • You could set the DataGrids Focus in the PreviewKeyDown-Event

    private void TheDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Delete)
        {
           var grid = (DataGrid)sender;
           FocusManager.SetFocusedElement(Window.GetWindow(grid), grid); //not tested
        }
    }
    

    If you dont want to put code in code-behind use AttachedProperties in combination with the DependencyPropertyChanged-Event.
    How to set set focus.