mvvm - 从另一个页面回来后重新初始化ViewModel

标签 mvvm viewmodel mvvmcross

我使用MvvmCross库进行跨平台移动开发。

我有带有聊天列表的页面(ChatListPageViewModel)。它通过Init()方法从容器加载聊天记录。

从此页面,您可以导航到将新聊天添加到容器(AddChatPageViewModel)的页面。

添加聊天后,我在AddChatPageViewModel中调用Close(this)。因此,我自动导航到ChatListPageViewModel,但是此时未调用Init()方法,因此无法刷新数据。我该如何处理?

最佳答案

Init保留用于初始化新的 View 模型-并不是为刷新现有 View 模型而专门设计的。

但是,我认为您可以通过以下方式实现所需的应用程序流类型:

添加聊天时

  • 从AddChatViewModel发送消息
  • 或编写自定义OnNavigatedTo,ViewDidAppear,OnResume处理程序,并使用它们在您的聊天 View 模型
  • 上调用自定义方法

    第一个方案的一个示例是CollectABull N + 1示例-https://github.com/slodge/NPlus1DaysOfMvvmCross/tree/master/N-13-CollectABull-Part2-当收集服务发生更改时,它会广播一条消息,允许订阅的ViewModels更新-有关演练视频,请参见http://mvvmcross.wordpress.com

    关于mvvm - 从另一个页面回来后重新初始化ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17581377/

    相关文章:

    asp.net-mvc - 为什么 Razor View 在访问分配给局部变量的模型的索引器时向输入名称添加 "CS$<>8__locals1"前缀?

    android - 我应该在哪里将改造电话放在m​​vvm中并处理其响应

    c# - MVVM 光 ViewModelLocator : How to register Singleton ViewModel?

    c# - 检测从ViewModel WPF单击了哪个按钮

    c# - 创建 ViewModel 类

    xamarin - 如何在 MvvmCross 中动态更改图像

    entity-framework - 使用 MVC3 和 View 模型中的 Entity Framework 插入多对多相关表

    c# - 静态 ViewModel 与实例化 ViewModel

    windows - UWP 中的多选下拉列表

    xamarin.android - MvvmCross教程 - 可移植类库程序集引用错误 - MonoDroid