【问题标题】:Showing the network activity with mvvmlight使用 mvvmlight 显示网络活动
【发布时间】:2015-09-29 08:37:05
【问题描述】:
我一直在这里撞墙。
我有一个使用 mvvmlight 的 xamarin 应用程序。已接近完成,但有人指出网络活动微调器未在任何平台上显示。
了解这是一个特定于平台的操作,有没有办法可以绑定触发微调器的按钮并在从网络活动返回时取消微调器?
我确实考虑过类似的事情
this.BtnDoSomething.SetCommand(Events.Click, () => {startSpinner; this.ViewModel.DoStuff});
但这不会在完成时回调以移除微调器。
【问题讨论】:
标签:
xamarin.ios
windows-phone-8.1
xamarin.android
mvvm-light
【解决方案1】:
我认为一个更清洁的解决方案是这样的:
- 有一个名为
IsBusy 的属性
- 在开始加载内容之前,将其设置为
true
- 在您完成加载内容后将其设置为
false
在您看来,将某种 Spinner 的可见性绑定到该属性。所有这些行为都应该进入 ViewModel 而不是在您的 View 中完成。
【解决方案2】:
我没有用过 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();
}
}