如何将光标聚焦在wpf中datagrid中的当前单元格中

时间:2013-10-19 08:45:54

标签: wpf

我正在数据网格中的celleditending事件中进行验证。一旦消息 如果我在消息框中单击确定,则会在消息框中显示。焦点在 datagrid移动到上一行。我希望焦点在当前的验证行中。

我尝试了这段代码,但它没有用。

int index = attendancegrid .SelectedIndex;
 attendancegrid .SelectedItem = attendancegrid .Items[index];
 attendancegrid .ScrollIntoView(attendancegrid .Items[index]); 

如果有人知道如何关注当前验证行,请使用一些代码来帮助我

1 个答案:

答案 0 :(得分:1)

每当您显示MessageBox并单击“确定”时,您将失去MainWindow的焦点。 虽然正在保存逻辑焦点,但是当您返回MainWindow时,您会看到逻辑焦点,当您在范围内单击时可以将其转换为键盘焦点。

要了解更多信息,请查看此链接。

http://msdn.microsoft.com/en-us/library/aa969768.aspx

如果您希望使用逻辑焦点并让wpf为您完成工作,请阅读:

http://msdn.microsoft.com/en-us/library/System.Windows.Input.FocusManager(v=vs.110).aspx

现在回答你的问题。我会通过使用FocusManager.FocusedElement来解决这个问题。只需在错误模板中设置该属性即可。

另一种方法是订阅Validation.Error事件并强制使用Keyboard.Focus方法将对象发送者聚焦在事件处理程序中。

http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.error.aspx