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.
Navigation zu Objekt
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
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