我在MVVM / Prism应用程序中实现了DataGrid
。 DataGrid
通过上下文菜单和键盘手势支持剪切/复制/粘贴/删除。
我发现删除/剪切行时整个DataGrid
失去焦点,键盘焦点移动到最后一个聚焦控件。
反正有没有阻止这个?
删除行后,我可能需要重新粘贴到DataGrid
。此外,如果网格为空,则根本无法获得键盘焦点。单击空网格不会使其聚焦。
这是一个类似的问题,但它并没有为我解决问题: DataGrid Looses Focus When Delete Key is Pressed
答案 0 :(得分:1)
您可以在PreviewKeyDown-Event
中设置DataGrids Focusprivate void TheDataGrid_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Delete)
{
var grid = (DataGrid)sender;
FocusManager.SetFocusedElement(Window.GetWindow(grid), grid); //not tested
}
}
如果您不想将代码放在代码隐藏中,请将AttachedProperties与DependencyPropertyChanged-Event结合使用。
How to set set focus
答案 1 :(得分:0)
一个肮脏的解决方案可能是处理LostFocus
公开的DataGrid
事件,并将注意力集中在控件上。
它可能会轻易地侵犯MVVM模式,即保持视野愚蠢,但它仍然是视图代码。