【问题标题】:"Undo" databinding change if save button is not clicked如果未单击保存按钮,则“撤消”数据绑定更改
【发布时间】:2016-09-05 14:25:58
【问题描述】:

这可能吗?

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

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

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

我需要“撤消”数据绑定如果我单击取消或导航返回所做的更改。

我的工作我觉得可能不是要走的路,是“oldObject”和“didClickSaveButton”属性当我回到第一页(OnAppearing)时检查它,如果未单击保存按钮,则恢复为旧值。

没有更好的方法吗?也许是内置的?

【问题讨论】:

    标签: xaml data-binding xamarin.forms


    【解决方案1】:

    为您的编辑页面创建一个 ViewModel。当页面加载时,使用选定的域对象来创建您的 VM。如果用户选择保存,则将 VM 中的更改保留回域对象。如果用户取消,则什么也不做。

    【讨论】:

    • 是的,我在想这可能是我的问题。您会建议始终为我创建的每个 xaml 页面创建一个新的 ViewModel 吗?我只是在任何地方都找不到任何指导方针......
    • 我认为在 MVVM 中这是理想的方法
    【解决方案2】:

    只需克隆您的域对象并将其传递给您的视图模型以进行数据绑定。我采用了一种快速而肮脏的方法

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      • 2019-08-03
      相关资源
      最近更新 更多