我在实现一个功能时遇到了一些麻烦,就像在加载页面时显示一个ActivityIndicator一样简单,但这已证明非常困难。将新页面导航到导航时显示ActivityIndicator
这是我使用App.xaml.cs代码:
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new NavigationPage(new LoginPage());
}
}
这是我LoginPage
public partial class LoginPage : ContentPage
{
public LoginPage()
{
InitializeComponent();
btnLogin.Clicked += BtnLogin_Clicked;
}
protected async void BtnLogin_Clicked(object sender, EventArgs e)
{
loadingView.IsVisible = true;
activityIndicator.IsRunning = true;
await Navigation.PushAsync(new SchedulePage());
loadingView.IsVisible = false;
activityIndicator.IsRunning = false;
}
}
没有进入的细节,该loadingView是一个视图我有关于我的ActivityIndicator的xaml文件。我的主要问题是,当我调用Navigation.PushAsync()时,ActivityIndicator的动画会停止。据我所读到的,这是因为两个操作都发生在主线程上,所以一个中断另一个。
我需要显示指标的原因是因为我的SchedulePage需要大量的渲染时间,因为它有一个XLabs日历控件。
你会如何去执行这样的事情?
用户界面必须在主线程上初始化,所以你不能把它放在一边。你可以做的是确保数据加载和日历控制混合发生在一个异步的方式。 –
这将涉及浏览CalendarView源代码中的所有复杂类,并弄清楚它是如何结合在一起的,而且我不是C#的专业人士。我正在寻找一种更简单的方法来避免任何可能的麻烦,我在这里的时间表很紧迫:S现在,我只是要保持原样,简单地存在活动指示器,尽管不是旋转,应该足以让用户知道发生了什么事情,我希望... – Tharkius
也许确保数据加载异步发生(也就是不在构造函数或导航到)将足够,但基本上,是的,那就是这是什么意思。复杂数据的表现并不适合时间紧凑的情况。 :P –