最佳化效能:其他建議

本主題提供最佳化 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 的物件可以將 屬性設定 IsHitTestVisiblefalse ,以停用點擊測試。

CompositionTarget.Rendering 事件

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

避免使用 ScrollBarVisibility = Auto

盡可能避免使用 ScrollBarVisibility.AutoVerticalScrollBarVisibility 屬性的值 HorizontalScrollBarVisibility 。 這些屬性是針對 RichTextBoxScrollViewerTextBox 物件所定義,以及 做為 物件的附加屬性 ListBox 。 請改為將 設定 ScrollBarVisibilityDisabledHiddenVisible

這個 Auto 值適用于空間有限的情況,而且應該只在必要時顯示捲軸。 例如,將此值 ScrollBarVisibilityListBox 30 個專案搭配使用,而不是 TextBox 使用數百行文字,可能很有用。

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

WPF 字型快取服務會在 WPF 應用程式之間共用字型資料。 如果服務尚未執行,您執行的第一個 WPF 應用程式會啟動此服務。 如果您使用 Windows Vista,您可以將 「Windows Presentation Foundation (WPF) 字型快取 3.0.0.0」 服務從 「Manual」 (預設值) 設定為 「Automatic (Delayed Start)」,以減少 WPF 應用程式的初始啟動時間。

另請參閱