【问题标题】:MvvmCross Navigate From ViewModel EventMvvmCross 从 ViewModel 事件导航
【发布时间】:2014-04-13 21:12:45
【问题描述】:

我从这里读到了“ViewModel 到 ViewModel 导航”和“View Model Lifecycle”: https://github.com/MvvmCross/MvvmCross/wiki/ViewModel--to-ViewModel-navigation https://github.com/MvvmCross/MvvmCross/wiki/View-Model-Lifecycle

我可以使用 Init() 或 Start() 方法来初始化当前的 ViewModel。 我也可以将参数从一个 ViewModel 传递到另一个 ViewModel 并在 Init() 方法中接收它。

所以我的问题: 当我创建 Windows Phone 应用程序时,我使用了“NavigateTo”和“NavigateFrom”方法。 Init() 类似于“NavigateTo”。 但是我没有在 mvvmcross 中找到“NavigateFrom”方法的替代方法,当我通过“关闭(此)”或使用 Windows 手机上的后退按钮“返回”时,我不知道如何重新加载数据。

你能提示我吗?

提前致谢!

更新

我发现 Messenger(MvvmCross 插件)可以帮助我在另一个第二个 ViewModel 更改数据时通知第一个 ViewModel(例如,将项目添加到集合中)。 所以当第二个 ViewModel 添加新项目时,第一个 ViewModel 会在 OnCollectionChanged(CollectionChangedMessage obj) 方法中重新加载数据。

Stuart 在 NPlus1DaysOfMvvmCross/N-13-CollectABull-Part2 中展示了如何使用此插件。 链接在这里:https://github.com/MvvmCross/NPlus1DaysOfMvvmCross/tree/master/N-13-CollectABull-Part2

【问题讨论】:

    标签: c# windows-phone mvvmcross


    【解决方案1】:

    但我没有在 mvvmcross 中找到“NavigateFrom”方法的替代方法,当我通过“关闭(此)”或使用 Windows 手机上的后退按钮“返回”时,我不知道如何重新加载数据。

    一般情况下,您不需要在此事件中重新加载数据 - 因为 ViewModel 已经从先前的向前导航中创建和初始化。

    如果您确实想在返回时对 ViewModel 进行一些刷新,那么 N=42 视频中的 IVisible 模式可能会有所帮助,但您需要自己将其添加到您的 View 和 ViewModel - 请参阅 @987654321 @

    【讨论】:

    • "一般来说,你不需要在这个事件中重新加载数据——因为 ViewModel 已经从前面的向前导航中创建并初始化了。"是的,我明白这一点。但是第一个 ViewModel 使用的数据可能已被其他第二个 ViewModel 更改,因此我必须将此通知第一个 ViewModel。我发现 Messenger(MvvmCross 插件)可以帮助我解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多