.Net 4 WPF DataGrid MVVM
用户点击添加按钮,触发视图模型中的命令。在视图模型中执行命令时,我会向绑定到网格的视图模型的视图集合中添加一个新对象。新行确实出现在我的网格中。但是,我也想将焦点发送到该新行中的第一个可编辑单元格。
我甚至“欺骗”了mvvm,为我的视图模型添加了一个事件,以便视图知道何时将焦点聚焦到新行。
我搜索过,但没有找到解决方法。当我看到这个链接时,我很有希望:
Datagrid Set focus on newly added row
它指向:
http://social.msdn.microsoft.com/forums/en-US/wpf/thread/63974f4f-d9ee-45af-8499-42f29cbc22ae
但其他人报告的问题却无人回答,即如何处理网格的虚拟化行为。新添加的行尚未创建。因此,GetCells调用经常失败。如果需要ScrollIntoView,则更有可能失败。
我挂了很多事件,包括LoadingRow和RequestBringIntoView,但都没有成功。根据我挂接的事件不同,我设法获得了单元格的一个引用。但是然后我收到错误“在内容生成正在进行时无法调用StartAt”。但是,我检查了ItemContainerGenerator的状态,并在调用单元格的BeginEdit时生成了容器。