我正在使用平板电脑/桌面应用,目前遇到嵌套的LoadViewModel调用问题:
某些视图/视图模型显示实时数据。对于没有网络连接的情况,存在单独的“离线”视图模型,其由实时视图模型加载并且一旦我们再次在线就将自动关闭。这工作正常,除非我们在“实时”视图模型加载时处于脱机状态。在这种情况下,我试图在“实时”视图模型的初始化期间加载“离线”视图模型。不幸的是,首先呈现“离线”视图,然后是“实时”视图(即使LoadViewModel以相反的顺序调用其中)。由于这些视图显示在同一窗口区域中,因此显示“实时”视图而不是“离线”视图。
在另一个地方有一个典型的主细节界面。在那里我遇到了同样的问题。如果我尝试预先选择主视图的列表条目,则逻辑上会导致对相应详细信息视图的LoadViewModel调用。同样,在加载主视图之前加载详细视图。这是我的演示者的问题,因为主视图充当详细视图的容器,(我知道,使用Stuard的示例中使用的MultiRegionPresenter,这是有效的,但是你不能有详细的视图模型,它们并不总是具有相同的子数量-viewmodels。)
也许我出错了,有更好的办法吗?或者是否有一种简单的方法可以确保以与调用LoadViewModel相同的顺序加载视图?
修改 非常感谢所有快速回复!一个例子的最佳开端是Twitter搜索示例(https://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch),遗憾的是它似乎不再完全有效:-(。无论如何,解释我试图做的事情可能并不重要。如果你改变了HomeViewModel的构造函数调用SearchCommand()并在TwitterSearch.UI.Wpf项目的MultiRegionPresenter的Present(...)中放置一个断点,即使HomeViewModel是HomeViewModel,断点也会被TwitterView(这是我们的“详细视图”)命中。首先加载模型。加载HomeViewModel时是否有另一种或更好的方法来加载TwitterViewModel?
答案 0 :(得分:0)
我不明白为什么在没有网络连接或处于“离线”模式时需要不同的视图模型。在MVVM中,我们为每个视图使用一个视图模型。保持简单,你的问题就会消失。当你离线时,你只会在空UI控件的顶部显示一条消息?
无论哪种方式,我强烈建议您将离线视图模型中的任何属性和/或功能放入标准的在线视图模型中。