如何在关闭弹出消息后将焦点设置回错误元素

本文关键字:焦点 设置 错误元素 消息 | 更新日期: 2023-09-27 18:18:42

我有一个DataGrid,它有一个datagridtemplatecolumcolumn,包含一个可编辑的TextBox控件。我还使用EventTrigger和InvokeCommandAction在xaml中注册LostFocus事件。

例如:我的网格有两行,当我单击第一行的单元格进行编辑时,如果我输入一些无效的值,按Tab或enter键将焦点移出编辑单元格,我必须执行以下任务:

  1. 使该单元格的边框为红色
  2. 显示一个错误信息弹出(只包含一个消息标签和一个关闭按钮)
  3. 在上述弹出窗口关闭后,将焦点设置在该错误单元格上,并在其中放置一个指向文本框的指针,供用户再次输入,直到输入有效值

关于No.1 &我已经做了,但是我不知道如何做第三件事。当前的行为是当弹出窗口关闭时,它会自动聚焦到下一行的单元格,而不是上一个错误单元格。

有人能帮我吗?谢谢你。

如何在关闭弹出消息后将焦点设置回错误元素

最后,我找到了一种方法可以解决我的问题,那就是使用Dispatcher对象来调用这样的委托:

var focusingElement = (System.Threading.ThreadStart)delegate { element.Focus(); };
Application.Current.Dispatcher.BeginInvoke(focusingElement);

其中element是FrameworkElement或UIElement对象的类型。在我的例子中,这是TextBox控件