0

我正在开发平板电脑/桌面应用程序,目前面临嵌套 LoadViewModel 调用的问题:

  • 一些视图/视图模型显示实时数据。对于没有网络连接的情况,有一个单独的“离线”视图模型,它由实时视图模型加载,一旦我们再次在线,它就会自行关闭。除非我们在加载“实时”视图模型时处于离线状态,否则这工作正常。在这种情况下,我试图在“实时”视图模型的初始化期间加载“离线”视图模型。不幸的是,首先呈现的是“离线”视图,然后是“实时”视图(即使 LoadViewModel 以相反的顺序调用 where )。由于这些视图呈现在同一窗口区域中,因此显示的是“实时”视图而不是“离线”视图。

  • 在另一个地方有一个典型的主从界面。在那里我遇到了同样的问题。如果我尝试预先选择主视图的列表条目,这在逻辑上会导致相应详细视图的 LoadViewModel 调用。同样,在加载主视图之前加载详细视图。这对我的演示者来说是个问题,因为主视图充当详细视图的容器,(我知道,使用 Stuard 示例中使用的 MultiRegionPresenter,这是可行的,但是您不能拥有不总是具有相同数量的子视图的详细视图模型-视图模型。)

也许我做错了,有更好的方法吗?或者有没有一种简单的方法来确保视图的加载顺序与调用 LoadViewModel 的顺序相同?

编辑: 非常感谢所有快速回复!一个示例的最佳开始是 Twitter 搜索示例(https://github.com/MvvmCross/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch),不幸的是它似乎不再完全工作了:-(。无论如何,解释我试图做什么可能并不重要.如果您将 HomeViewModel 的构造函数更改为调用 SearchCommand() 并在 TwitterSearch.UI.Wpf 项目的 MultiRegionPresenter 的 Present(...) 中放置一个断点尽管 HomeViewModel 是首先加载的模型,但首先为 TwitterView(这是我们的“详细视图”)命中断点。当 HomeViewModel 加载时,是否有另一种或更好的方法可以立即加载 TwitterViewModel?

4

1 回答 1

0

我不明白为什么在没有网络连接或处于“离线”模式时需要不同的视图模型。在 MVVM 中,我们每个视图使用一个视图模型。保持简单,你的问题就会消失。当然,当您离线时,您只会在空的 UI 控件顶部显示一条消息?

无论哪种方式,我强烈建议您将离线视图模型中的任何属性和/或功能放入标准在线视图模型中。

于 2013-11-11T10:29:29.900 回答