Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.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
C# 关闭(此)调用的ViewModel回调_C#_Mvvmcross - Fatal编程技术网

C# 关闭(此)调用的ViewModel回调

C# 关闭(此)调用的ViewModel回调,c#,mvvmcross,C#,Mvvmcross,ViewModelA将ShowViewModel调用到ViewModelB。如果B调用Close(this),它将关闭并返回到A 有没有办法让ViewModela知道B已关闭?像是回电话 谢谢 解决viewmodel相互依赖关系的最佳方法之一是使用MessageBus/Event Aggregator模式的松耦合方法。许多流行的MVVM框架(例如ReactiveUI)都附带了这方面的实现。正如Stuart在其中一条评论中提到的,在Android上,无法保证活动A仍将运行以通过messenger接

ViewModelA将ShowViewModel调用到ViewModelB。如果B调用Close(this),它将关闭并返回到A

有没有办法让ViewModela知道B已关闭?像是回电话


谢谢

解决viewmodel相互依赖关系的最佳方法之一是使用MessageBus/Event Aggregator模式的松耦合方法。许多流行的MVVM框架(例如ReactiveUI)都附带了这方面的实现。

正如Stuart在其中一条评论中提到的,在Android上,无法保证活动A仍将运行以通过messenger接收通知。我最喜欢的解决MvvmCross中类似“通知”的问题的方法是设计活动A和活动B以使用共享数据访问层,并通过持久化状态进行通信。当您开始分析应用程序时,您可能会发现活动A可能不需要知道活动B已完成。相反,它可以对基础数据中的更改做出响应。

这些有帮助吗?需要注意的一个“问题”是,在某些平台(如Droid)上,当ViewModel B关闭时,ViewModel A的实例并不总是仍在内存中-操作系统可能会“墓碑”并在显示B时重新显示A活动/视图。在观看N=12视频()后,我尝试使用消息系统与ViewModel A交流ViewModel B关闭的情况,结果成功了。这是一个好方法吗?MvvmCross不包含内置的Messenger。基于WeakReference的一个是通过插件()提供的,但您也可以自由使用替代方案(例如TinyMessenger)。在我的情况下,我需要刷新ModelView A中的实体列表,因为B包含一个表单,可以在数据库中插入一个新元组。那么,我怎样才能用你的方法做到这一点呢?谢谢检查。当活动A被带到前台时,您可以使用类似的方法从数据层重新加载数据。谢谢Alexey!我会调查的!