Я пишу приложение WPF, используя фрейм навигации. Я пытаюсь отобразить индикатор выполнения во время ожидания загрузки страницы.
Как и на странице msdn sais:
Навигация: Происходит при запросе новой навигации. Может быть использован для
отменить навигацию.
NavigationProgress: периодически происходит во время загрузки, чтобы обеспечить
информация о ходе навигации.
Навигация: Происходит, когда страница была найдена и загружена.
Итак, у меня есть Grid (navigationStatusGrid) с ProgressBar (navigationProgressBar) и у меня есть кадр (mainFrame)
Это мои обработчики событий:
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
Итак, вы бы сказали, что это работает, но каким-то образом интерфейс обновляется только при загрузке страницы. Пользовательский интерфейс даже зависает при загрузке ... Я не вижу индикатор выполнения только мгновенно загруженной страницы. Как мне это решить?