如何在关闭弹出消息后将焦点设置回错误元素
本文关键字:焦点 设置 错误元素 消息 | 更新日期: 2023-09-27 18:18:42
我有一个DataGrid,它有一个datagridtemplatecolumcolumn,包含一个可编辑的TextBox控件。我还使用EventTrigger和InvokeCommandAction在xaml中注册LostFocus事件。
例如:我的网格有两行,当我单击第一行的单元格进行编辑时,如果我输入一些无效的值,按Tab或enter键将焦点移出编辑单元格,我必须执行以下任务:
- 使该单元格的边框为红色
- 显示一个错误信息弹出(只包含一个消息标签和一个关闭按钮)
- 在上述弹出窗口关闭后,将焦点设置在该错误单元格上,并在其中放置一个指向文本框的指针,供用户再次输入,直到输入有效值
关于No.1 &我已经做了,但是我不知道如何做第三件事。当前的行为是当弹出窗口关闭时,它会自动聚焦到下一行的单元格,而不是上一个错误单元格。
有人能帮我吗?谢谢你。
最后,我找到了一种方法可以解决我的问题,那就是使用Dispatcher对象来调用这样的委托:
var focusingElement = (System.Threading.ThreadStart)delegate { element.Focus(); };
Application.Current.Dispatcher.BeginInvoke(focusingElement);
其中element
是FrameworkElement或UIElement对象的类型。在我的例子中,这是TextBox控件