i有一个显示Person对象详细信息的网格。当选择一行时,我将在单独的区域中显示详细信息。当用户编辑例如在“详细信息”视图中的“名字”文本框中,更改将立即反映在网格中。当用户决定取消编辑时,我可以通过替换“详细信息”视图中的对象来撤消更改,但是“网格”视图中的更改不会恢复。
在详细视图的OnNavigatedTo中,我具有:
_persons = navigationContext.Parameters["persons"] as List<Person>;
我制作_persons [0]的Memberwise副本并在“详细信息视图”中显示_persons [0]:
PersonEdit = _persons[0];
_savedPerson = _persons[0].Clone();
详细信息视图的所有字段都绑定到PersonEdit。更改绑定到PersonEdit.FirstName的FirstName,网格将显示更改后的值。
[当用户按下“取消编辑”按钮时,我要恢复保存的副本。
都尝试过:
PersonEdit _savedPerson;
_persons[0] = _savedPerson;
这将还原“详细信息”视图中编辑之前所做的更改,但网格保持不变。
有什么想法吗?
谢谢,
Helmut
我认为您应该花一些时间来构建撤消(重做?)基础结构。想到命令。
直到那时,由于
[当用户编辑详细信息视图中的“名字”文本框,更改将立即反映在网格中
您应该恢复所有原始值,更改(即撤消)也将直接可见。
因此,请勿克隆和编辑克隆,而应保留克隆,并在用户单击撤消按钮时将每个可编辑的值从克隆复制到原始对象。
旁注:如果您使用默认的Clone
实现,则最好110%确保这对于您的域是正确的(并且将来还会使用。)>