使用 mvvmlight 显示网络 activity

Showing the network activity with mvvmlight

我一直在用头撞墙

我有一个使用 mvvmlight 的 xamarin 应用程序。它接近完成,但有人指出网络 activity 微调器未在任何平台上显示。

了解这是一个特定于平台的操作,有没有一种方法可以绑定触发微调器的按钮,并通过网络 activity 在 return 上取消微调器?

我确实考虑过

this.BtnDoSomething.SetCommand(Events.Click, () => {startSpinner; this.ViewModel.DoStuff});

但这不会在完成时回调以移除微调器。

我没用过 Xamarin,但你能不能做点像:

this.BtnDoSomething.SetCommand(Events.Click, () => 
{
    startSpinner(); 
    this.ViewModel.DoStuff(stopSpinner)
});

然后您的 DoStuff 方法将接受一个回调作为参数并在完成时调用它:

public void DoStuff(Action callback)
{
    // Do some asynchronous stuff
    // call callback
    if (callback != null)
    {
         callback();
    }
}

我认为更简洁的解决方案是这样的:

  1. 有一个 属性 叫 IsBusy
  2. 就在开始加载内容之前,您将其设置为 true
  3. 加载完后立即将其设置为 false

在您看来,将某种 Spinner 的可见性绑定到 属性。所有这些行为都应该进入 ViewModel,而不是在您的视图中完成。