1

Xamarin.Forms项目,我想告诉ActivityIndicator展现自己,然后导航到另一个页面告诉ActivityIndi​​cator展现自己,然后导航到另一个页面

activityIndicatorObject = new ActivityIndicator() 
       { 
        HorizontalOptions = LayoutOptions.CenterAndExpand, 
        Color = Color.Red, 
        IsVisible = false, 
        IsRunning = false, 
        IsEnabled = false, 
        BindingContext = this, 
       }; 
ViewBookButton = new Button{ Text = "view book" }; 
ViewBookButton.Clicked += ViewBook; 
protected void ViewBook(Object sender,EventArgs e) 
      { 
       //Go To View Book Page 
       activityIndicatorObject .IsVisible = true; 
       activityIndicatorObject .IsRunning = true; 
       activityIndicatorObject .IsEnabled = true; 
       activityIndicatorObject .SetBinding(ActivityIndicator.IsVisibleProperty, "IsBusy"); 
       this.IsBusy = true; 
       Navigation.PushAsync(new BookPage()); 
       this.IsBusy = false; 
      } 

ActivityIndicator不显示?我如何让它显示?

+1

,而不是它的值得一提的,因为你加载了新的一页,这将在'UI做Thread'这种负荷将阻止'UI Thread'也就是说即使你确实得到了一个活动指示器来显示它不会旋转,因为UI线程将被页面加载阻止 – user1

回答

5

据我所知,告诉ActivityIndicator显示你自己,然后导航到另一页。并且新页面没有自己的ActivityIndicator。我想建议你在OnAppearing方法BookPage中进行艰苦操作。

protected override void OnAppearing() 
{ 
    base.OnAppearing(); 

    activityIndicator.IsVisible = true; 

    // Some hard operations 

    activityIndicator.IsVisible = false; 
} 

或使用绑定的activityIndicator.IsVisible = true;

+2

同意最好在“新”页面上显示ActivityIndi​​cator。更好地直接推送新页面并显示在那里加载,而不是在未定义的时间推送页面。这会让用户产生误解,并可能会给你很难调查的基于时间的错误。通常,尽可能快地对用户输入做出反应 - 不要等待任何异步操作。 –

相关问题