共用方式為


最佳化效能:其他建議

本主題提供最佳化 WPF 應用程式效能一節中主題所涵蓋內容以外的效能建議。

本主題包含下列幾節:

筆刷透明度與項目透明度的比較

當您使用 Brush 來設定元素的 FillStroke 時,最好設定 Brush.Opacity 值,而不是設定元素的 Opacity 屬性。 修改元素的 Opacity 屬性可能會導致 WPF 建立暫存介面。

NavigationWindow 物件衍生自 Window ,並以內容導覽支援擴充它,主要是藉由匯總 NavigationService 和日誌。 您可以藉由指定統一資源識別碼 (URI) 或物件來更新 NavigationWindow 的工作區。 下列範例將顯示這兩種方法:

private void buttonGoToUri(object sender, RoutedEventArgs args)
{
    navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}

private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
    NewPage nextPage = new NewPage();
    nextPage.InitializeComponent();
    navWindow.Content = nextPage;
}
Private Sub buttonGoToUri(ByVal sender As Object, ByVal args As RoutedEventArgs)
    navWindow.Source = New Uri("NewPage.xaml", UriKind.RelativeOrAbsolute)
End Sub

Private Sub buttonGoNewObject(ByVal sender As Object, ByVal args As RoutedEventArgs)
    Dim nextPage As New NewPage()
    nextPage.InitializeComponent()
    navWindow.Content = nextPage
End Sub

每個 NavigationWindow 物件各有一份日誌,其中記載使用者在該視窗中的瀏覽記錄。 日誌的用途之一,就是讓使用者能夠追溯其步驟。

當您使用統一資源標識碼 (URI) 導覽時,日誌只會儲存統一資源識別碼 (URI) 參考。 這表示您每次重新瀏覽頁面時,它都會動態重新建構,如果頁面相當複雜,就有可能耗費許多時間。 在此情況下,日誌儲存成本雖然較低,但重新建構頁面所需的時間則可能很長。

當您使用物件進行瀏覽時,日誌會儲存該物件的整個視覺化樹狀結構。 這表示在您每次重新瀏覽頁面時,它都會立即呈現而不需重新建構。 在此情況下,日誌儲存成本較高,但重新建構頁面所需的時間較短。

當您使用 NavigationWindow 物件時,必須留意日誌支援對應用程式效能所造成的影響。 如需詳細資訊,請參閱 巡覽概觀

大型立體表面的點擊測試

就 CPU 的耗用量而言,大型立體表面的點擊測試是一項很耗損效能的作業。 當立體表面為動畫形式時,更是如此。 若您不需要對這些表面進行點擊測試,請停用點擊測試。 衍生自 UIElement 的物件可以藉由將 IsHitTestVisible 屬性設定為 false來停用點擊測試。

CompositionTarget.Rendering 事件

CompositionTarget.Rendering 事件會導致 WPF 持續產生動畫效果。 若使用此事件,請盡可能中斷其連結。

避免使用 ScrollBarVisibility = Auto

盡可能避免針對 HorizontalScrollBarVisibilityVerticalScrollBarVisibility 屬性使用 ScrollBarVisibility.Auto 值。 這些屬性是針對 RichTextBoxScrollViewerTextBox 物件所定義,以及作為 ListBox 物件的附加屬性。 請改為 ScrollBarVisibility 設定為 DisabledHiddenVisible

Auto 值適用於空間有限且捲軸僅在必要時才顯示的情況。 例如,使用這個 ScrollBarVisibility 值與 30 個項目 ListBox ,而不是具有數百行文字的 TextBox ,如此可能較實用。

設定字型快取服務以縮短啟動時間

WPF 字型快取服務可在 WPF 應用程式之間共用字型資料。 您所執行的第一個 WPF 應用程式會啟動此服務 (若尚未執行)。 若您使用 Windows Vista,即可將「Windows Presentation Foundation (WPF) Font Cache 3.0.0.0」 服務從「手動」(預設值) 設定為「自動 (延遲開始)」,以縮短 WPF 應用程式的初始啟動時間。

另請參閱