在datagrid上单元格提交更改后,如何知道更改的值

时间:2014-10-29 20:41:03

标签: c# wpf datagrid wpfdatagrid

我的问题,实际上我需要知道数据网格行上是否更改了某个特定的单元格,以便使用默认值自动填充同一行的其他字段。

我尝试使用RowEditEnding事件。但是在更改被调用之前会触发此事件,并且在提交更改以获取特定单元格的新值之后我需要一个事件。

问题:

如何在细胞失去焦点后立即知道细胞的值?

1 个答案:

答案 0 :(得分:1)

在提交更改之前,看起来单元格和行的所有*EditEnding事件都会被引发(事实上,事件提供了取消编辑的最后机会)。

如果您可以等到用户完成整行编辑,那么最可靠的解决方案可能是让您的行对象实现IEditableObject并让他们在调用EndEdit时触发事件。根据编辑是否已取消或已提交,网格应在编辑完成时调用CancelEditEndEdit。但请注意,只有在用户完成整行的编辑后才会调用此选项。当用户完成编辑单元格时,您将不会收到通知。

如果您在添加新行时填写默认值,并且正在通过“新项目行”添加该行,则可以尝试处理AddingNewItem事件,在用户开始编辑时填写默认值。这可能是最顺畅的方法。

或者,您可以使用CellEditEnding处理Dispatcher.BeginInvoke并安排延迟操作,以填写其他列的默认值。