ナビゲーションフレームを使用してWPFアプリケーションを作成しています。私は、ページがロードされるのを待っている間にプログレスバーを表示しようとしています。 msdn pageサイス同様NavigationProgressにプログレスバーが表示されない
:
ナビゲーション:新しいナビゲーションが要求されたときに発生します。ナビゲーションをキャンセルするには を使用することができます。
NavigationProgress:ダウンロード中に定期的に発生し、 ナビゲーション進行状況の情報を提供します。
移動:ページが見つかってダウンロードされたときに発生します。
だから私はプログレス(navigationProgressBar)とグリッド(navigationStatusGrid)を持っていると私はフレーム(メインフレーム)を持っている
これらは私のイベントハンドラです:
private void mainFrame_NavigationProgress(object sender, NavigationProgressEventArgs e)
{
long progress = e.BytesRead * 100/e.MaxBytes;
Console.WriteLine("Navigating progress:" + progress + "%");
navigationProgressBar.Value = progress;
}
private void mainFrame_Navigating(object sender, NavigatingCancelEventArgs e)
{
Console.WriteLine("start navigating");
mainFrame.Visibility = Visibility.Hidden;
navigationStatusGrid.Visibility= Visibility.Visible;
}
private void mainFrame_Navigated(object sender, NavigationEventArgs e)
{
Console.WriteLine("end navigating");
mainFrame.Visibility = Visibility.Visible;
navigationStatusGrid.Visibility = Visibility.Hidden;
}
これが私の出力です:
start navigating
Navigating progress:4%
Navigating progress:8%
...
Navigating progress:87%
Navigating progress:92%
Navigating progress:96%
Navigating progress:99%
Navigating progress:100%
Navigating progress:100%
end navigating
これはうまくいくと思いますが、UIが更新されるのは、ページが読み込まれたときだけです。 UIは読み込み中にフリーズします...ロードされたページだけをプログレスバーで見ることはできません。これをどうすれば解決できますか?
何らかの理由で進行状況イベントが発生することもありません... –
mainFrame.Source = new Uri( "Views/Home.xaml"、UriKind.Relative); ここで "Views/Home.xaml"は私が読み込んでいるページです。私のためにイベントを起動しますが、スレッドの問題がいくつかあると思います。ナビゲーションはUIなどと同じスレッドで行われます。 – VDP
@VDP 2番目のページを読み込んでいる間にユーザーに進捗状況を示すための解決策が見つかりました –