Freigeben über


Optimieren der Leistung: Weitere Empfehlungen

Dieses Thema enthält zusätzlich zu den in den Themen des Abschnitts Optimieren der WPF-Anwendungsleistung beschriebenen Empfehlungen weitere Empfehlungen zur Leistungsoptimierung.

Dieses Thema enthält folgende Abschnitte:

  • Durchlässigkeit für Pinsel oder Durchlässigkeit für Elemente

  • Navigation zu Objekt

  • Treffertests für große 3D-Oberflächen

  • CompositionTarget.Rendering-Ereignis

  • Vermeiden der Verwendung von ScrollBarVisibility=Auto

  • Konfigurieren des Schriftartcachediensts zum Reduzieren der Startzeit

Durchlässigkeit für Pinsel oder Durchlässigkeit für Elemente

Wenn Sie mit einem Brush den Fill-Wert oder den Stroke-Wert eines Elements festlegen, empfiehlt es sich, den Brush.Opacity-Wert statt der Einstellung der Opacity-Eigenschaft des Elements festzulegen. Wenn die Opacity-Eigenschaft eines Elements geändert wird, erstellt WPF möglicherweise eine temporäre Oberfläche.

Das NavigationWindow-Objekt wird von Window abgeleitet und erweitert es mit Inhaltsnavigationsunterstützung. Dabei werden in erster Linie NavigationService und das Journal aggregiert. Sie können den Clientbereich von NavigationWindow aktualisieren, indem Sie entweder einen uniform resource identifier (URI) oder ein Objekt angeben. Im folgenden Beispiel werden beide Methoden veranschaulicht:

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

Jedes NavigationWindow-Objekt verfügt über ein Journal, das den Navigationsverlauf des Benutzers in diesem Fenster aufzeichnet. Ein Zweck des Journals besteht darin, Benutzern das Zurückverfolgen ihrer Schritte zu ermöglichen.

Wenn Sie mit einem uniform resource identifier (URI) navigieren, speichert das Journal nur den uniform resource identifier (URI)-Verweis. Dies bedeutet, dass die Seite bei jedem erneuten Besuch dynamisch rekonstruiert wird, was je nach Komplexität der Seite sehr zeitaufwändig sein kann. In diesem Fall sind die Kosten für die Journalspeicherung zwar gering, der Zeitaufwand für die Wiederherstellung der Seite ist jedoch potenziell sehr hoch.

Wenn Sie mit einem Objekt navigieren, speichert das Journal die ganze visuelle Struktur des Objekts. Dies bedeutet, dass die Seite bei jedem erneuten Besuch sofort gerendert wird, ohne dass sie rekonstruiert werden muss. In diesem Fall sind die Kosten für die Journalspeicherung hoch, der Zeitaufwand für die Wiederherstellung der Seite ist jedoch gering.

Beim Verwenden des NavigationWindow-Objekts müssen Sie bedenken, wie durch die Journalunterstützung die Leistung der Anwendung beeinflusst wird. Weitere Informationen finden Sie unter Übersicht über die Navigation.

Treffertests für große 3D-Oberflächen

Die Treffertests für große 3D-Oberflächen stellen hinsichtlich der CPU-Auslastung einen sehr ressourcenintensiven Vorgang dar. Dies gilt insbesondere, wenn die 3D-Oberfläche animiert ist. Deaktivieren Sie die Treffertests, wenn Sie keine Treffertests für diese Oberflächen benötigen. Objekte, die von UIElement abgeleitet werden, können die Treffertests deaktivieren, indem sie die IsHitTestVisible-Eigenschaft auf false festlegen.

CompositionTarget.Rendering-Ereignis

Das CompositionTarget.Rendering-Ereignis bewirkt, dass WPF fortlaufend animiert. Wenn Sie dieses Ereignis verwenden, trennen Sie es bei jeder Gelegenheit.

Vermeiden der Verwendung von ScrollBarVisibility=Auto

Vermeiden Sie nach Möglichkeit die Verwendung des ScrollBarVisibility.Auto-Werts für die Eigenschaften HorizontalScrollBarVisibility und VerticalScrollBarVisibility. Diese Eigenschaften werden für RichTextBox-Objekte, ScrollViewer-Objekte und TextBox-Objekte sowie als angefügte Eigenschaft für das ListBox-Objekt definiert. Legen Sie stattdessen ScrollBarVisibility auf Disabled, Hidden oder Visible fest.

Der Auto-Wert ist für Fälle vorgesehen, in denen der Platz beschränkt ist und Symbolleisten nur bei Bedarf angezeigt werden sollen. Zum Beispiel kann es sinnvoll sein, diesen ScrollBarVisibility-Wert für ein ListBox mit 30 Elementen anstatt für ein TextBox mit Hunderten von Textzeilen zu verwenden.

Konfigurieren des Schriftartcachediensts zum Reduzieren der Startzeit

Der WPF-Schriftartcachedienst nutzt Schriftartdaten zwischen WPF-Anwendungen. Die erste WPF-Anwendung, die Sie ausführen, startet diesen Dienst, wenn er nicht bereits ausgeführt wird. Bei Windows Vista können Sie den Dienst "Windows Presentation Foundation (WPF)-Schriftartcache 3.0.0.0" von "Manuell" (Standard) auf "Automatisch (Verzögerter Start)" festlegen, um die anfängliche Startzeit von WPF-Anwendungen zu reduzieren.

Siehe auch

Konzepte

Planen der Anwendungsleistung

Optimieren der Leistung: Vorteile der Hardware nutzen

Optimieren der Leistung: Layout und Entwurf

Optimieren der Leistung: 2D-Grafiken und Bildverarbeitung

Optimieren der Leistung: Objektverhalten

Optimieren der Leistung: Anwendungsressourcen

Optimieren der Leistung: Text

Optimieren der Leistung: Datenbindung

Tipps und Tricks zu Animationen