【问题标题】:How to set focus back to error element after closing a popup message?关闭弹出消息后如何将焦点设置回错误元素?
【发布时间】:2015-10-22 06:52:15
【问题描述】:

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

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

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

关于 1 号和 2 号我已经完成了,但我不知道如何处理 3 号。当前行为是当弹出窗口关闭时,它会自动聚焦到下一行的单元格而不是前一个错误单元格。

谁能帮帮我?谢谢。

【问题讨论】:

    标签: c# wpf mvvm wpfdatagrid


    【解决方案1】:

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

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

    elementFrameworkElementUIElement 对象的类型。在我的例子中是 TextBox 控件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-05
      • 2020-03-27
      • 2021-06-25
      • 1970-01-01
      • 2011-05-18
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多