WinForms数据绑定与保存按钮?

Mat*_*Mat 5 c# data-binding binding winforms

当你有一个Save按钮时,C#WinForms中的数据绑定应该如何工作?在按Save之前,我不想更新数据!

我有两个表单(列表和详细信息)BindingList<T>,分别由集合和我的自定义对象支持.我可以适当地将每个表单绑定到列表或对象.但是,详细信息表单中的任何更改都会立即反映在列表表单中 - 我不想保存更改并更新列表中显示的详细信息,直到按下"保存"按钮.

数据绑定是否旨在支持这一点?这样做有共同的模式吗?

无论我采用哪种方式,绑定似乎都无法支持这种情况.我考虑过以下几点:

  • 将对象的克隆传递给详细信息表单,但是我必须在Save上协调更改 - 同时可能已对列表中的副本进行了更改.

  • 实现IEditableObject和调用EndEditsave几乎可以正常工作,因为我可以阻止列表被通知按下Save之前所做的更改,但是如果其他东西导致刷新,则使用临时数据更新列表.

我目前在我的详细视图中不再使用数据绑定,而是手动完成所有操作.这很烦人.

Jon*_*gel 4

不幸的是,数据绑定实际上并不是为这种事情而设计的。

正如您所提到的,我们在这里找到的最佳解决方案是编辑对象克隆,然后协调更改。您可能想要提供一个自定义集合和/或对象接口来帮助您管理此类事物。

即使克隆方法的前期工作稍微多一些,它也比尝试IEditableObject捕获更新数据的所有可能事件要简单得多,也不会令人沮丧。不仅如此,它还是一种更直接的方法,并且您不会最终得到意大利面条式的代码。