Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här avsnittet innehåller prestandarekommendationer utöver de som beskrivs i avsnittet Optimera WPF-programprestanda .
Det här avsnittet innehåller följande avsnitt:
Opacitet för penslar kontra opacitet för element
När du använder en Brush för att ange Fill eller Stroke för ett element är det bättre att ange Brush.Opacity värdet i stället för att ange elementets Opacity egenskap. Om du ändrar en elementegenskap Opacity kan WPF skapa en tillfällig yta.
Navigering till objekt
Objektet NavigationWindow härleds från Window och utökar det med stöd för innehållsnavigering, främst genom aggregering NavigationService och journalen. Du kan uppdatera klientområdet NavigationWindow för genom att ange antingen en enhetlig resursidentifierare (URI) eller ett objekt. Följande exempel visar båda metoderna:
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
Varje NavigationWindow objekt har en journal som registrerar användarens navigeringshistorik i det fönstret. Ett av syftet med journalen är att tillåta användare att följa stegen igen.
När du navigerar med en enhetlig resursidentifierare (URI) lagrar journalen endast referensen för enhetlig resursidentifierare (URI). Det innebär att varje gång du går tillbaka till sidan rekonstrueras den dynamiskt, vilket kan vara tidskrävande beroende på sidans komplexitet. I det här fallet är kostnaden för journallagring låg, men tiden för att återskapa sidan är potentiellt hög.
När du navigerar med ett objekt lagrar journalen hela objektets visuella träd. Det innebär att varje gång du går tillbaka till sidan återges den omedelbart utan att behöva rekonstrueras. I det här fallet är journallagringskostnaden hög, men tiden för att återskapa sidan är låg.
När du använder NavigationWindow objektet måste du tänka på hur journalstöd påverkar programmets prestanda. Mer information finns i Navigeringsöversikt.
Testa på stora 3D-ytor
Att testa på stora 3D-ytor är en mycket prestandaintensiv åtgärd när det gäller CPU-förbrukning. Detta gäller särskilt när 3D-ytan animeras. Om du inte kräver träfftestning på dessa ytor inaktiverar du träfftestning. Objekt som härleds från UIElement kan inaktivera träfftestning genom att ange IsHitTestVisible egenskapen till false.
CompositionTarget.Rendering-händelse
Händelsen CompositionTarget.Rendering gör att WPF kontinuerligt animerar. Om du använder den här händelsen, koppla bort den vid varje tillfälle.
Undvik att använda ScrollBarVisibility=Auto
Undvik att använda ScrollBarVisibility.Auto värdet för HorizontalScrollBarVisibility egenskaperna och VerticalScrollBarVisibility när det är möjligt. Dessa egenskaper definieras för RichTextBox, ScrollVieweroch TextBox objekt och som en bifogad egenskap för ListBox objektet. Ange ScrollBarVisibility i stället till Disabled, Hiddeneller Visible.
Värdet Auto är avsett för fall då utrymmet är begränsat och rullningslister endast ska visas vid behov. Det kan till exempel vara användbart att använda det här ScrollBarVisibility värdet med ListBox 30 objekt i stället för ett TextBox med hundratals textrader.
Konfigurera font Cache Service för att minska starttiden
WPF Font Cache-tjänsten delar teckensnittsdata mellan WPF-program. Det första WPF-programmet som du kör startar den här tjänsten om tjänsten inte redan körs. Om du använder Windows Vista kan du ställa in tjänsten "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" från "Manuell" (standard) till "Automatisk (fördröjd start)" för att minska den första starttiden för WPF-program.
Se även
.NET Desktop feedback