使用 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();
}
}
我认为更简洁的解决方案是这样的:
- 有一个 属性 叫
IsBusy
- 就在开始加载内容之前,您将其设置为
true
- 加载完后立即将其设置为
false
在您看来,将某种 Spinner 的可见性绑定到 属性。所有这些行为都应该进入 ViewModel,而不是在您的视图中完成。
我一直在用头撞墙
我有一个使用 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();
}
}
我认为更简洁的解决方案是这样的:
- 有一个 属性 叫
IsBusy
- 就在开始加载内容之前,您将其设置为
true
- 加载完后立即将其设置为
false
在您看来,将某种 Spinner 的可见性绑定到 属性。所有这些行为都应该进入 ViewModel,而不是在您的视图中完成。