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

时间:2015-10-22 06:52:16

标签: c# wpf mvvm wpfdatagrid

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

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

  1. 使该单元格的边框为红色
  2. 显示错误消息弹出窗口(仅包含消息标签和关闭按钮)
  3. 关闭上述弹出窗口后,将焦点设置到该错误单元格并在其中放置一个指向文本框的指针,供用户再次输入,直到输入有效值
  4. 关于No.1& 2我已经完成但我不知道如何处理No.3。当前行为是当弹出窗口关闭时,它会自动聚焦到下一行的单元格,而不是前一个错误单元格。

    任何人都可以帮助我吗?谢谢。

1 个答案:

答案 0 :(得分:1)

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

<div ng-app="pdbApp" data-ng-controller="MainCtrl">
  <form novalidate class="simple-form">
     Last name: <input type="text" name="lname" data-ng-model="product.name"><br>
     <input type="submit" value="Submit" class="btn btn-sm btn-primary" data-ng-click="mandar()" >
  </form>
</div>

var focusingElement = (System.Threading.ThreadStart)delegate { element.Focus(); }; Application.Current.Dispatcher.BeginInvoke(focusingElement); 的位置是FrameworkElementUIElement对象的类型。在我的情况下是TextBox控件。