我有一个非常标准的需求 - 我需要能够打开一个对话框,在该对话框中用户可以更改数据绑定字段的值,然后选择单击“确定”或“取消”,其中单击“取消”会撤消更改。
我查看了IEditableCollectionView、IEditableObject和BindingGroup,但它们似乎都是用于同时编辑单个项。我的程序提供了一个对象列表中的对象集合,用户从列表中选择一个项目,并使用SelectedItem绑定的TextBox进行编辑。这意味着可以编辑任意数量的项目,包括将它们添加到列表中和从列表中删除它们,并且如果用户按下取消,则需要撤销所有更改。
起初,我只是通过深度复制(序列化)进行对象备份,并在取消时进行恢复,但现在对象必须包含对其他共享对象的引用,使得这种方法存在问题。
在不手动来回复制对象和/或值的情况下,如何最好地处理这种情况?
我查看了IEditableCollectionView、IEditableObject和BindingGroup,但它们似乎都是用于同时编辑单个项。我的程序提供了一个对象列表中的对象集合,用户从列表中选择一个项目,并使用SelectedItem绑定的TextBox进行编辑。这意味着可以编辑任意数量的项目,包括将它们添加到列表中和从列表中删除它们,并且如果用户按下取消,则需要撤销所有更改。
起初,我只是通过深度复制(序列化)进行对象备份,并在取消时进行恢复,但现在对象必须包含对其他共享对象的引用,使得这种方法存在问题。
在不手动来回复制对象和/或值的情况下,如何最好地处理这种情况?
DataTable
,可能会在未来的大型项目中使用它们。但对于这个应用程序来说,它有些过度,因为我还在学习 C# 和 WPF,所以我想保持它小而简单。 - Modus Operandi