我已将 ObservableCollection 绑定(bind)到 DataGrid。当我更改 DataGrid 中的值时,将引发 RowEditEnding 事件。但 e.Row.Item 是编辑之前的对象,因此您看不到新值。我明白这一点是因为 EditEnding。在 Silverlight 中,您有一个 EditEnded 事件,当我编辑 DataGrid 时,如何获取具有新值的对象。
谢谢
菲利普
最佳答案
来自https://social.msdn.microsoft.com/Forums/en-US/c38fc695-d1ec-4252-87b7-feb484ee01e4/wpf-4-datagrid-roweditending ,将Binding的UpdateSourceTrigger更改为PropertyChanged。然后,该属性将在 RowEditEnding 事件之前立即更新,并且可以从 RowEditEnding 事件处理程序访问新值。
例如,对于 DataGridComboBoxColumn
SelectedItemBinding="{Binding ForTestResult, UpdateSourceTrigger=PropertyChanged}"
这似乎是解决此问题的一个非常简单的方法。
此外,虽然我没有尝试过,但我认为如果您的对象实现了 IEditableObject,那么在编辑之前访问原始值应该很容易。
关于WPF DataGrid 有 RowEditEnding 但没有 RowEditEnded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907701/