ページがロードされている間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はビューIであります私のActivityIndicatorを収めているxamlファイルにあります。私の主な問題は、Navigation.PushAsync()を呼び出すと、ActivityIndicatorのアニメーションが停止されることです。私がこれを読んだところによると、両方の操作がメインスレッド上で発生するため、一方が他方に割り込むためです。
指標を表示する必要がある理由は、XLabsカレンダーコントロールがあるため、SchedulePageのレンダリングに時間がかかるためです。
このようなものを実装するにはどうしたらいいですか?
メインスレッドでUIを初期化する必要があります。そのため、途中で取り除くことはできません。あなたができることは、カレンダーコントロールのデータロードとpupulatingが非同期の方法で行われることを確認することです。 –
これは、CalendarViewソース内のすべての複雑なクラスをサーフィンすることと、それがどのように一緒になるかを考え出すことであり、私はC#に精通していません。私は考えられる頭痛を避けるための簡単なアプローチを探しています。私はここで厳しいスケジュールをとっています:S今のところ、それをそのまま残しています、活動指標の単純な存在。紡績は、ユーザーに何か起こっていることを知らせるのに十分でなければならないと思います... – Tharkius
データのロードが非同期で行われるかどうかを確認するには、コンストラクタで行ったり、ナビゲートしたりしないでください。その意味。複雑なデータを使用したパフォーマンスは、厳密なスケジュールのためのものではありません。 :P –