【问题标题】:MvvmCross and TombstoningMvvmCross 和墓碑
【发布时间】:2013-04-15 19:30:53
【问题描述】:

我正在研究一个基本的 MvvmCross (v3.0.3) 示例,并且在研究如何在应用程序被墓碑化时重新加载状态时有点卡住了。目前我有一个带有单一视图模型和一个属性的可移植类库。我还有一个 Windows Phone 8 应用程序,它引用了这个 PCL,绑定到视图模型,然后将一个文本块绑定到属性。

一切正常,因为属性的值显示在屏幕上。我已将 WP8 项目设置为停用时的墓碑,当我单击开始按钮时,会调用 ViewModel.SaveState 方法(没有打开代码,因此这可能不是正确的名称),我可以填充提供的“捆绑包” " 与属性中的值。

但是,当我通过按“返回”按钮返回应用程序时,不会调用相应的 ViewModel.ReloadState 方法。我期待调用此方法,以便加载 SaveState 中指定的数据。

我有什么遗漏吗? “停用时的墓碑”选项不会导致在 MvvmCross 中发生这种情况吗?

【问题讨论】:

    标签: mvvm windows-phone mvvmcross


    【解决方案1】:

    v3 中的 tombstoning 代码是全新的 - 尽管我已经在 WinRT 和 Android 上亲自测试过,但它还没有在所有平台上完全运行。

    在 WindowsPhone 上,我还保留了一项功能 - 主要是因为我不太清楚要在其中添加什么...

    您需要实现的功能是在页面中加载和保存状态 - 请参阅 MvxPhonePage 中的两个空虚方法:https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.WindowsPhone/Views/MvxPhonePage.cs#L54

    将文本序列化/反序列化到 MvxBundle 的代码非常简单 - 只需使用 IMvxSavedStateConverter - 请参阅 Droid 代码:https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Droid/Views/MvxActivityViewExtensions.cs#L59

    可能有一些我可以在所有 Windows Phone 应用程序上使用的通用代码...

    【讨论】:

    • 嗨斯图尔特。我注意到 MvxPhonePage 上的 LoadStateBundle 方法不提供从 SaveStateBundle 访问相同的 IMvxBundle。我认为我会自己管理数据的保存/加载而不依赖于 IMvxBundle 是否正确?另外,是否计划在 Windows Phone 上使用 ViewModel.SaveState 和 ViewModel.ReloadState?
    • 今天德克萨斯州有点忙...但基本上需要进行墓碑化的页面需要实现 LoadStateBundle 和 SaveStateBundle - 他们需要确定(在隔离存储中?)他们将保存和加载捆绑数据(字符串字典)。在你实现之后,墓碑应该就可以工作了。
    • 再次抱歉,昨天无法更全面地回答这个问题 - 只是忙。如果它不起作用......请告诉我!
    猜你喜欢
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    相关资源
    最近更新 更多