如何使用MVVM实现对象编辑的取消。
例如:我有一份客户名单。我选择一个客户并单击“编辑”按钮,一个对话框窗口(DataContext绑定到CustomerViewModel)打开,我开始编辑客户的字段。然后我决定取消编辑,但是客户的字段已经更改,那么我如何在MVVM中将客户返回到其以前的状态?
发布于 2009-07-07 09:19:16
查看IEditableObject
接口。您的Customer
类应该实现这一点,并且您的命令可以适当地执行BeginEdit
/ CancelEdit
/ EndEdit
。
发布于 2013-07-31 04:53:24
您可以对UpdateSourceTrigger=Explicit
使用绑定。Here您可以找到有关如何实现此功能的更多信息。
发布于 2009-10-17 03:05:57
在this article中,劳尔只需从数据库中重新加载对象。我想这比Kent提出的解决方案麻烦少了。
internal void Cancel(CustomerWorkspaceViewModel cvm)
{
Mainardi.Model.ObjectMapping.Individual dc = cvm.DataContext
as Mainardi.Model.ObjectMapping.Individual;
int index = 0;
if (dc.ContactID > 0 && dc.CustomerID > 0)
{
index = _customerCollectionViewModel.List.IndexOf(dc);
_customerCollectionViewModel.List[index] =
_customerBAL.GetCustomerById(dc.CustomerID);
}
Collection.Remove(cvm);
}
https://stackoverflow.com/questions/1091036
复制相似问题