行删除/剪切后,WPF DataGrid失去焦点

时间:2013-04-05 17:54:44

标签: wpf wpfdatagrid

我在MVVM / Prism应用程序中实现了DataGridDataGrid通过上下文菜单和键盘手势支持剪切/复制/粘贴/删除。

我发现删除/剪切行时整个DataGrid失去焦点,键盘焦点移动到最后一个聚焦控件。

反正有没有阻止这个?

删除行后,我可能需要重新粘贴到DataGrid。此外,如果网格为空,则根本无法获得键盘焦点。单击空网格不会使其聚焦。

这是一个类似的问题,但它并没有为我解决问题: DataGrid Looses Focus When Delete Key is Pressed

2 个答案:

答案 0 :(得分:1)

您可以在PreviewKeyDown-Event

中设置DataGrids Focus
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
    }
}

如果您不想将代码放在代码隐藏中,请将AttachedPropertiesDependencyPropertyChanged-Event结合使用。
How to set set focus

答案 1 :(得分:0)

一个肮脏的解决方案可能是处理LostFocus公开的DataGrid事件,并将注意力集中在控件上。

它可能会轻易地侵犯MVVM模式,即保持视野愚蠢,但它仍然是视图代码。