我的问题,实际上我需要知道数据网格行上是否更改了某个特定的单元格,以便使用默认值自动填充同一行的其他字段。
我尝试使用RowEditEnding
事件。但是在更改被调用之前会触发此事件,并且在提交更改以获取特定单元格的新值之后我需要一个事件。
问题:
如何在细胞失去焦点后立即知道细胞的值?
答案 0 :(得分:1)
在提交更改之前,看起来单元格和行的所有*EditEnding
事件都会被引发(事实上,事件提供了取消编辑的最后机会)。
如果您可以等到用户完成整行编辑,那么最可靠的解决方案可能是让您的行对象实现IEditableObject
并让他们在调用EndEdit
时触发事件。根据编辑是否已取消或已提交,网格应在编辑完成时调用CancelEdit
或EndEdit
。但请注意,只有在用户完成整行的编辑后才会调用此选项。当用户完成编辑单元格时,您将不会收到通知。
如果您在添加新行时填写默认值,并且正在通过“新项目行”添加该行,则可以尝试处理AddingNewItem
事件,在用户开始编辑时填写默认值。这可能是最顺畅的方法。
或者,您可以使用CellEditEnding
处理Dispatcher.BeginInvoke
并安排延迟操作,以填写其他列的默认值。