我有一个ObervableCollection数据项。此集合绑定到ListBox。当用户从列表框中选择一个项目并单击“编辑”按钮时,将显示带有该项目详细信息的UserControl,并将各种属性绑定到文本框。每种绑定模式都设置为TwoWay。在这个详细的UserControl上,我想实现2个按钮,OK和Cancel。这与Windows中的UI一致。此应用程序使用Model-View_ViewModel模式。这是我的问题:
1)如果所有更改都已提交,我如何实施“取消”按钮?
答案 0 :(得分:0)
您可以绑定到真实集合的副本,然后只在OK单击上提交更改,或者您可以重新编写数据对象以允许事务更改,从而可以根据对话结果调用Commit或Rollback。 p>
答案 1 :(得分:0)
简短的回答是,你不能。数据对象中的原始值不会存储在SL的任何位置,因此除非您更改过程,否则无法还原由于数据绑定而所做的更改。
在将对象放入对话框之前,我建议您复制一个要编辑的对象。如果您的对象很简单,您可以轻松添加“MakeCopy”成员:
public MyObject MakeCopy()
{
return (MyObject)base.MemberwiseClone();
}