Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin-ActivityIndicator需要时间显示_Xamarin_Xamarin.forms_Activity Indicator - Fatal编程技术网

Xamarin-ActivityIndicator需要时间显示

Xamarin-ActivityIndicator需要时间显示,xamarin,xamarin.forms,activity-indicator,Xamarin,Xamarin.forms,Activity Indicator,我有一个带钥匙的钮扣 await this.Navigation.PushModalAsync 该命令在单击时运行。 我想在按下按钮时显示ActivityIndicator,这是我的按钮单击命令: async void ButtonClicked(object sender, EventArgs e) { actCentros.IsRunning = true; await this.Navigation.PushModalAsync(...); actCentros.

我有一个带钥匙的钮扣

await this.Navigation.PushModalAsync
该命令在单击时运行。 我想在按下按钮时显示ActivityIndicator,这是我的按钮单击命令:

async void ButtonClicked(object sender, EventArgs e)
{
    actCentros.IsRunning = true;
    await this.Navigation.PushModalAsync(...);
    actCentros.IsRunning = false;
}
这需要大约1秒的时间来显示。如果没有
PushModalAsync
,它会在单击时显示


为什么会发生这种情况?

我发现有效的方法是将活动指示器的
IsRunning
属性绑定到基于ViewModel的布尔
INotifyPropertyChanged
属性,例如“IsProcessing”,并在命令的Execute delegate方法开始时将其设置为true,在方法的末尾返回false。我没有注意到这种方法在单击绑定到命令的按钮时有任何延迟。

这是不够的代码,但从我看到的情况来看,您的按钮按下是一种异步方法,任何与UI相关的更改都必须在主线程上调用。必须在UI线程上调用ActivityIndicator。我假设您有轻微延迟的原因是,因为您的代码在完成后等待执行方法中的内容,此时ActivityIndicator显示.Tx。你有什么解决办法吗?动画就是诀窍,正如上面解释的,你能添加足够的代码来重现这个问题吗?