在Xamarin Forms MVVM中从服务加载数据的最佳位置

3
什么是在Xamarin Forms中调用服务和加载数据的最佳位置?
  1. 到目前为止,我是在视图模型构造函数中调用服务并加载数据的。
  2. 我有一个新的情况 - 在我的应用程序中,我检查网络连接,如果没有连接到互联网,我将不会在主窗体中加载数据,并显示一个模态窗口提示未连接到网络。如果重新检查成功,将弹出模态窗口,但由于数据未加载,主窗体为空。
因此,在这种情况下,我必须在“on appearing”重写函数中编写服务调用。在弹出模态窗口后调用。这是可以的。但问题是每次导航到该视图时,它都会进行一次服务调用。
请指导我调用这些服务的最佳位置。

我建议不要在构造函数中进行服务调用。构造函数是用于初始化的,而不是用于任何繁重的操作。 - Mike Eason
@MikeEason 那么最佳实践是OnAppearing吗?你是指视图或视图模型的构造函数吗? - Krishna
好问题,我也有同样的问题。很遗憾没有更多的答案。 - ArieKanarie
2个回答

2

针对您的问题,您可以使用C#事件(发布者-订阅者)作为解决方案。在视图模型中编写名为InternetDisconnectedEvent的事件。在视图的Code behind(.xaml.cs)中订阅该事件。

当网络断开连接时,在视图中进行UI更改。

了解更多有关事件和委托的信息,请参阅此教程


我现在不是在寻找解决方案,我已经实施了。而是想知道在Xamarin中,将数据加载到视图模型中声明的对象的最佳位置来进行服务调用。 - Krishna

0
在编程中,返回翻译文本:

"...但问题是每次导航到该视图时,它都会进行一次服务调用。"

在视图模型(或视图,取决于您当前的实现)中创建一个标志(布尔属性),例如IsLoaded,最初设置为false。然后添加一个逻辑,在调用服务之前检查IsLoaded标志。如果IsLoadedfalse,则运行当前的逻辑以检查互联网连接、调用服务等等,并最后更新IsLoadedtrue


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接