Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mvvm 从其他页面返回后重新初始化ViewModel_Mvvm_Viewmodel_Mvvmcross - Fatal编程技术网

Mvvm 从其他页面返回后重新初始化ViewModel

Mvvm 从其他页面返回后重新初始化ViewModel,mvvm,viewmodel,mvvmcross,Mvvm,Viewmodel,Mvvmcross,我使用MvvmCross库进行跨平台移动开发 我有一个带有聊天列表的页面(ChatListPageViewModel)。它通过Init()方法从容器中加载聊天 从该页面,您可以导航到将新聊天添加到容器的页面(AddChatPageViewModel) 添加聊天时,我在AddChatPageViewModel中调用Close(this)。所以,我自动导航到ChatListPageViewModel,但此时未调用Init()方法,并且无法刷新数据。如何处理这个问题?Init是为初始化新的viewmo

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

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

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


添加聊天时,我在AddChatPageViewModel中调用Close(this)。所以,我自动导航到ChatListPageViewModel,但此时未调用Init()方法,并且无法刷新数据。如何处理这个问题?

Init是为初始化新的viewmodels而保留的,它并不是为刷新现有的viewmodels而设计的

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

  • 添加聊天室时从AddChatViewModel发送消息
  • 或者编写自定义OnNavigatedTo、ViewDidDisplay和OnResume处理程序,并使用这些处理程序在聊天视图模型上调用自定义方法

第一种方案的一个例子是CollectABull N+1示例——当采集服务更改时,它会广播一条消息,允许订阅的ViewModels更新-请参阅演练视频。

Init保留用于初始化新的ViewModels-它并不是真正用于刷新现有的ViewModels

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

  • 添加聊天室时从AddChatViewModel发送消息
  • 或者编写自定义OnNavigatedTo、ViewDidDisplay和OnResume处理程序,并使用这些处理程序在聊天视图模型上调用自定义方法

第一种方案的一个例子是CollectABull N+1示例——当采集服务发生变化时,它会广播一条消息,允许订阅的ViewModels进行更新——请参阅演练视频。

我曾考虑过使用订阅服务器和通知器的事件聚合器,但这似乎不是最好的方法。但如果是的话,没关系,谢谢!我肯定会考虑处理OnNavidatedTo、viewdide和OnResume。这看起来是解决这个问题的最好办法。我在考虑使用订阅服务器和通知服务器的事件聚合器,但这似乎不是最好的办法。但如果是的话,没关系,谢谢!我肯定会考虑处理OnNavidatedTo、viewdide和OnResume。这似乎是解决问题的最好办法