"撤消"如果未单击保存按钮,则数据绑定更改

时间:2016-09-05 14:25:58

标签: xaml data-binding xamarin.forms

这可能吗?

我所拥有的只是一个列表编辑页面

  • 包含项目列表的页面
  • 编辑第一页中的项目的页面
  • 编辑页面有取消和保存按钮的位置

当我按下保存按钮时,我保存该项目并导航到更新项目的上一页。 所以页面之间的数据绑定工作正常。

我需要的是"撤消"如果我点击取消或导航回来,我做的数据绑定更改。

我的工作我觉得 可能 ,是一个" oldObject"和#34; didClickSaveButton"我回到第一页时检查的属性(OnAppearing),如果没有点击保存按钮,则恢复为旧值。

对此没有更好的方法吗?内置的东西可能吗?

2 个答案:

答案 0 :(得分:2)

为您的编辑页面创建一个ViewModel。页面加载时,使用选定的域对象创建VM。如果用户选择“保存”,则将更改从VM保留回域对象。如果用户取消,则不执行任何操作。

答案 1 :(得分:1)

只需克隆您的域对象并将其传递给数据绑定的viewmodel。我采取了快速而肮脏的方法

public static T Clone<T>(T source)
        {
            var serialized = JsonConvert.SerializeObject(source);
            return JsonConvert.DeserializeObject<T>(serialized);
        }

并且是为每个页面创建一个新的视图模型