Freigeben über


Optimieren der Leistung: Weitere Empfehlungen

Dieses Thema enthält neben den Themen, die in den Themen im Abschnitt Optimieren der WPF-Anwendungsleistung behandelt werden, Leistungsempfehlungen.

Dieses Thema enthält die folgenden Abschnitte:

Deckkraft bei Pinseln im Vergleich zu Deckkraft bei Elementen

Wenn Sie ein Brush verwenden, um die Fill oder Stroke eines Elements festzulegen, ist es besser, den Brush.Opacity-Wert festzulegen, anstatt die Opacity-Eigenschaft des Elements zu setzen. Das Ändern der Opacity-Eigenschaft eines Elements kann dazu führen, dass WPF eine temporäre Oberfläche erstellt.

Das NavigationWindow-Objekt ist von Window abgeleitet und erweitert es um Unterstützung bei der Inhaltsnavigation, vor allem durch Aggregieren von NavigationService und ein Journal. Sie können den Clientbereich von NavigationWindow aktualisieren, indem Sie entweder einen URI (Uniform Resource Identifier) oder ein Objekt angeben. Das folgende Beispiel zeigt beide Methoden:

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

Jedes NavigationWindow-Objekt verfügt über ein Journal, in dem der Navigationsverlauf des Benutzers in diesem Fenster aufgezeichnet wird. Einer der Zwecke des Journals besteht darin, Benutzern die Rückverfolgung ihrer Schritte zu ermöglichen.

Wenn Sie mit einem URI (Uniform Resource Identifier) navigieren, wird im Journal nur der URI-Verweis aufgezeichnet. Dies bedeutet, dass jedes Mal, wenn Sie die Seite erneut aufrufen, dynamisch rekonstruiert wird, was je nach Komplexität der Seite zeitaufwändig sein kann. In diesem Fall sind die Speicherkosten des Journals niedrig, aber die Zeit für die Wiederherstellung der Seite könnte potenziell hoch sein.

Wenn Sie mithilfe eines Objekts navigieren, speichert das Journal die gesamte visuelle Struktur des Objekts. Dies bedeutet, dass die Seite bei jedem weiteren Besuch sofort gerendert wird, ohne dass sie rekonstruiert werden muss. In diesem Fall sind die Speicherkosten des Journals hoch, jedoch ist die Zeit für die Wiederherstellung der Seite niedrig.

Wenn Sie das NavigationWindow-Objekt verwenden, müssen Sie berücksichtigen, wie sich die Journaling-Funktion auf die Leistung Ihrer Anwendung auswirkt. Weitere Informationen finden Sie unter Übersicht über die Navigation.

Treffertests auf großen 3D-Oberflächen

Treffertests auf großen 3D-Oberflächen sind ein sehr leistungsintensiver Betrieb im Hinblick auf den CPU-Verbrauch. Dies gilt insbesondere, wenn die 3D-Oberfläche animiert wird. Wenn Sie keine Treffertests auf diesen Oberflächen benötigen, deaktivieren Sie Treffertests. Von UIElement abgeleitete Objekte können Treffertests deaktivieren, indem sie die eigenschaft IsHitTestVisible auf falsefestlegen.

CompositionTarget.Rendering-Ereignis

Das CompositionTarget.Rendering-Ereignis bewirkt eine kontinuierliche Animation durch WPF. Wenn Sie dieses Ereignis verwenden, sollten Sie es bei jeder Gelegenheit trennen.

Vermeiden 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-, ScrollViewer- und TextBox-Objekte und als angefügte Eigenschaft für das ListBox-Objekt definiert. Legen Sie stattdessen ScrollBarVisibility auf Disabled, Hiddenoder Visiblefest.

Der Auto-Wert ist für Fälle vorgesehen, in denen der Speicherplatz beschränkt ist und Scrollleisten nur bei Bedarf angezeigt werden sollen. Beispielsweise kann es sinnvoll sein, diesen ScrollBarVisibility-Wert mit einer ListBox von 30 Elementen anstelle eines TextBox mit hunderten Textzeilen zu verwenden.

Konfigurieren des Schriftartcachediensts zum Verringern der Startzeit

Der WPF-Schriftartcachedienst teilt Schriftartdaten zwischen WPF-Anwendungen. Die erste WPF-Anwendung, die Sie ausführen, startet diesen Dienst, wenn er noch nicht ausgeführt wird. Wenn Sie Windows Vista verwenden, können Sie den Dienst "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" von "Manual" (standard) auf "Automatic (Delayed Start)" festlegen, um die anfängliche Startzeit von WPF-Anwendungen zu verringern.

Weitere Informationen