如何使用MVVM取消对对象的编辑?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

如何实现使用MVVM编辑对象的取消。

例如:我有一张顾客名单。我选择一个客户--点击“编辑”按钮,打开一个对话框窗口(DataContext绑定到CustomerViewModel),然后开始编辑Customer的字段。然后我决定取消编辑,但是客户的字段已经被更改了,那么我如何在MVVM中将一个客户返回到以前的状态呢?

提问于
用户回答回答于

如果对象已经可串行化,比如正在使用WCF,那么这是一种非常简单的方法。可以将原始对象序列化为内部字段。如果对象不能序列化,那么只需使用若要用一行代码创建对象的副本,请执行以下操作。

Order backup = Mapper.Map<Order, Order>(order);

当处理CancelCommand时,只需反向调用AutoMapper即可。因为属性已经有了更改通知,所以一切都可以正常工作。如果需要并希望编写额外的代码,可以将这些技术与IEditableObject结合起来。

用户回答回答于

检查一下IEditableObject接口。你的Customer类应该实现这一点,命令可以执行。

BeginEdit/CancelEdit/EndEdit视情况而定。

扫码关注云+社区