0

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

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

有没有办法防止这种情况发生?

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

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

4

2 回答 2

1

您可以在 PreviewKeyDown-Event 中设置 DataGrids 焦点

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结合使用。
如何设置焦点

于 2013-04-05T18:23:47.197 回答
0

一个肮脏的解决方案可能是处理由控件LostFocus公开的事件DataGrid并将焦点放在控件上。

可以说它略微侵犯了 MVVM 模式,即保持视图愚蠢,但它仍然是视图代码。

于 2013-04-05T17:59:45.167 回答