加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何将单元格聚焦在WPF DataGrid中的新行上

发布时间:2020-12-15 21:31:11 所属栏目:百科 来源:网络整理
导读:.Net 4 WPF DataGrid MVVM 用户单击添加按钮,触发viewmodel上的命令.在viewmodel命令执行中,我将一个新对象添加到网格绑定到的viewmodel的viewcollection中.新行确实出现在我的网格中.但是,我还想将焦点发送到该新行中的第一个可编辑单元格. 我甚至“欺骗”
.Net 4 WPF DataGrid MVVM

用户单击添加按钮,触发viewmodel上的命令.在viewmodel命令执行中,我将一个新对象添加到网格绑定到的viewmodel的viewcollection中.新行确实出现在我的网格中.但是,我还想将焦点发送到该新行中的第一个可编辑单元格.

我甚至“欺骗”了mvvm,在我的viewmodel上添加了一个视图监听的事件,知道何时聚焦新行.

我搜索过但没有运气.当我遇到这个时,我很有希望:

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”.但是当我调用单元格的BeginEdit时,我检查了ItemContainerGenerator的状态,它是ContainersGenerated.

解决方法

以下是以编程方式将焦点设置到特定单元格的一种方法:

DataGridCell cell = GetCell(rowIndex,colIndex);
cell.Focus;

有关GetCell()的更多信息,请参阅以下article.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读