共用方式為


最佳化效能:其他建議

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

此主題包括下列章節:

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

  • 物件巡覽

  • 大型立體表面的點擊測試

  • CompositionTarget.Rendering 事件

  • 避免使用 ScrollBarVisibility=Auto

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

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

當您使用 Brush 設定項目的 FillStroke 時,您應設定 Brush.Opacity 值,而非設定項目的 Opacity 屬性。 修改項目的 Opacity 屬性可能會使 WPF 建立暫時介面。

物件巡覽

NavigationWindow 物件是衍生自 Window,並使用內容巡覽支援加以擴充,這主要是藉由彙總 (Aggregate) NavigationService 與日誌來進行。 您可以指定uniform resource identifier (URI) 或物件,來更新 NavigationWindow 的用戶端區域。 下列範例顯示這兩種方法:

        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
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;
}

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

當您使用uniform resource identifier (URI) 進行巡覽時,日誌只會儲存uniform resource identifier (URI) 參考。 這表示您每次重新造訪頁面時,它都會動態重新建構,如果頁面相當複雜,就有可能耗費許多時間。 在此情況下,日誌儲存成本雖然較低,但重新建構頁面所需的時間則可能很長。

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

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

大型立體表面的點擊測試

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

CompositionTarget.Rendering 事件

CompositionTarget.Rendering 事件會造成 WPF 連續執行動畫。 若使用此事件,請盡可能中斷其連結。

避免使用 ScrollBarVisibility=Auto

若情況允許,請避免對 HorizontalScrollBarVisibility 與 VerticalScrollBarVisibility 屬性使用 ScrollBarVisibility.Auto 值。 這些屬性是針對 RichTextBoxScrollViewerTextBox 物件而定義的,並且屬於 ListBox 物件的附加屬性。 您應該將 ScrollBarVisibility 設定為 DisabledHiddenVisible

Auto 值適用於空間有限且捲軸僅在必要時才顯示的情況。 例如,相對於含有數百行文字的 TextBox,使用此 ScrollBarVisibility 值搭配 30 個項目的 ListBox 就會比較適合。

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

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

請參閱

概念

應用程式效能規劃

最佳化效能:運用硬體

最佳化效能:配置與設計

最佳化效能:2D 圖形和影像處理

最佳化效能:物件行為

最佳化效能:應用程式資源

最佳化效能:文字

最佳化效能:資料繫結

動畫秘訣和訣竅