Xamarin.ios 在另一个ViewModel中获取ViewModelReference

Xamarin.ios 在另一个ViewModel中获取ViewModelReference,xamarin.ios,xamarin.android,xamarin,mvvmcross,Xamarin.ios,Xamarin.android,Xamarin,Mvvmcross,我们有一个具有典型主/详细视图的应用程序。主视图显示票证标题列表,如果单击票证标题,则会看到包含票证详细信息的视图 主视图有一个模型,它是一个“票证”对象列表,每个对象包含有关特定票证的更多信息。我们在单击时绑定了一个处理程序,它基本上实例化了一个新的细节视图并显示它。这很好,只是我们必须将所有配置值作为基本数据类型提供给构造函数(我们知道在实例化时不能使用对象) 我们考虑了另一种方法,但无法使其工作。在Init()中(详细视图模型的),我们只传递(单击的票据的)ID,并希望使用Mvx.Reso

我们有一个具有典型主/详细视图的应用程序。主视图显示票证标题列表,如果单击票证标题,则会看到包含票证详细信息的视图

主视图有一个模型,它是一个“票证”对象列表,每个对象包含有关特定票证的更多信息。我们在单击时绑定了一个处理程序,它基本上实例化了一个新的细节视图并显示它。这很好,只是我们必须将所有配置值作为基本数据类型提供给构造函数(我们知道在实例化时不能使用对象)

我们考虑了另一种方法,但无法使其工作。在Init()中(详细视图模型的),我们只传递(单击的票据的)ID,并希望使用Mvx.Resolve来获取主视图模型。所以第一个问题是,你们能在其他视图模型中获取任意视图模型吗

第二个想法是编写一个基本视图模型类,我们应用程序中的所有视图模型都从该类继承,该类在实例化时将视图模型注册到服务,以便您可以调用该服务并从任何位置获取视图模型(中介模式)。这会违反框架吗

我发现一个答案是“使用消息”,但对我来说,它似乎有点笨重,至少我是如何理解这一点的。细节视图模型必须向主视图模型发送消息“好的,我现在准备好了”,然后主视图模型会说“好的,配置在这里”

因此,总结一下问题:

  • 是否可以从其他视图模型中的框架中获取某些视图模型
  • 手工实现这一点会违反框架吗
  • 我们是否正确理解了消息方法?如果没有,那么哪种方法更轻量级/通用
  • 干杯,谢谢


    Tom

    通常,当我必须在视图模型之间共享数据时,我会使用一个服务来管理它。该服务通常通过IoC注入

    我将视图模型视为服务和视图之间的中介。我的大部分逻辑都存储在服务中。视图模型中只有数据绑定的属性、分派到服务的命令以及其他表示级别的关注点

    对于您的场景,我将让
    MasterViewModel
    DetailViewModel
    传递一个标识符,在那里它将要求
    ConfigurationService
    按id进行配置


    希望这有帮助。

    我们现在用“Mvx.RegisterSingleton(()=>this);”将模型注册为singleton,然后用“Mvx.Resolve()”检索它。所以我认为国际奥委会的方法在这里也很有效。我们只是一开始没有正确使用registerSingleton。