簡體   English   中英

NavigationProgress 不顯示進度條

[英]NavigationProgress doesn't show progressbar

我正在使用導航框架編寫 WPF 應用程序。 我試圖在等待頁面加載時顯示進度條。

就像msdn 頁面一樣:

導航:在請求新導航時發生。 可用於取消導航。

NavigationProgress:在下載期間定期發生以提供導航進度信息。

導航:在頁面已定位並下載時發生。

所以我有一個帶有進度條(navigationProgressBar)的網格(navigationStatusGrid),我有一個框架(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;
}

這是我的 output:

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 只在頁面加載時更新。 用戶界面甚至在加載時凍結......我沒有立即看到加載頁面的進度條。 我該如何解決這個問題?

進度事件對我來說似乎毫無用處,而文檔聲稱導航是異步發生的(如果您使用Navigate方法),我無法確定它的哪一部分應該是異步的。

如果您有一個大型 XAML 會凍結 UI,如果您有一個長時間運行的構造器也會凍結 UI,並且如果您導航到網頁,則進度事件甚至不會被觸發。

如果 object 是在不同的線程上異步創建的,那么這至少有一些是有意義的,因為控件是線程精細的,這會導致問題。 如果您有一個長時間運行的構造函數,則需要將工作外部化到本地線程,因為構造函數本身需要在 UI 線程上調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM