Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从WPF数据网格中仅获取修改的项_Wpf_Binding_Wpfdatagrid - Fatal编程技术网

如何从WPF数据网格中仅获取修改的项

如何从WPF数据网格中仅获取修改的项,wpf,binding,wpfdatagrid,Wpf,Binding,Wpfdatagrid,我已经用可编辑的WPF数据网格绑定了一个列表 我只想从WPF数据网格中获取修改后的项进行更新 请告诉我如何执行此操作。您的数据行上有一个RowState属性(还有一个RowChanged事件),但请确保您需要此属性。我是否错误地认为数据绑定会自动确定哪些行需要更新?我的WPF datagrid应用程序设置如下: 1) 手动定义所有列,设置它们的绑定,并为每个指定的绑定设置源更新时通知的绑定 2) 为datagrid的SourceUpdated事件添加了事件处理程序 3) 在事件处理程序中,我只有

我已经用可编辑的WPF数据网格绑定了一个列表

我只想从WPF数据网格中获取修改后的项进行更新


请告诉我如何执行此操作。

您的数据行上有一个RowState属性(还有一个RowChanged事件),但请确保您需要此属性。我是否错误地认为数据绑定会自动确定哪些行需要更新?

我的WPF datagrid应用程序设置如下:

1) 手动定义所有列,设置它们的绑定,并为每个指定的绑定设置源更新时通知的绑定

2) 为datagrid的SourceUpdated事件添加了事件处理程序

3) 在事件处理程序中,我只有以下代码:

this.updatedItems.Add(BindingOperations.GetBindingExpression(e.TargetObject, e.Property).DataItem as MyClass); 
UpdateItems是一个HashSet,MyClass是绑定到datagrid的ItemsSuce的对象类型


4) 当用户单击save按钮时,我只是简单地枚举hashset。Hashset很好,因为它只包含唯一的值。因此,如果对一行进行多次编辑,或者即使对同一行中的多个单元格进行了编辑,哈希集仍将仅包含该对象的一个条目。

Hi-Marko,当我手动修改DataGrid时,SourceUpdate事件不会触发。我还为所有绑定列设置了notificsonsourceupdates=true。如果我错了或者遗漏了什么,请你纠正我好吗。您使用的是.NET4附带的DataGrid还是WPF工具包中的DataGrid?我不知道在这种情况下两者是否有任何行为差异(我使用的是.NET4)。确保绑定还具有UpdateSourceTrigger=PropertyChanged。手动更新是指键入值或在代码中设置值?嗨,Marco,我错过了UpdateSourceTrigger=PropertyChanged,它现在可以工作了。谢谢