我们有一个具有典型主/视图的应用程序。主视图显示故障单标题列表,如果单击故障单标题,则会看到包含故障单详细信息的视图。
主视图有一个模型,它是一个“故障单”对象列表,每个对象包含有关特定故障单的更多信息。我们在click上绑定了一个处理程序,它基本上实例化了一个新的细节视图并显示它。这很好,除了我们必须将所有配置值作为原始数据类型提供给构造函数(我们知道在实例化时我们不能使用对象)
我们考虑过另一种方法来做到这一点,但无法让它发挥作用。在Init()(详细视图模型)中,我们只传递ID(已点击的票证),并希望使用Mvx.Resolve来获取主视图模型。那么问题是,你能在其他视图模型中获取任意视图模型吗?
第二个想法是编写一个基本视图模型类,我们应用程序中的所有视图模型都从该模型类继承,它将实例化的视图模型注册到服务,以便您可以调用该服务并从任何位置获取视图模型(介体)图案)。这会违反框架吗?
我发现的一个答案是“使用信息”,但对我而言似乎有点笨重,至少我是如何理解这一点的。详细视图模型必须向主视图模型发送消息“我现在准备就绪”,然后主视图模型会说“好的,继承人配置”。
总结一下问题:
干杯和谢谢
汤姆
答案 0 :(得分:2)
通常,当我必须跨View Model共享数据时,我使用服务来管理它。该服务通常通过IoC注入。
我将View Models视为服务和视图之间的中介。我的大部分逻辑都存储在服务中。我在视图模型中唯一拥有的是数据绑定的属性,调度到服务的命令以及其他表示级别的问题。
对于您的方案,我会让MasterViewModel
将标识符传递给DetailViewModel
,在那里它会通过ID向ConfigurationService
询问配置。
希望这有帮助。