Optymalizacja wydajności: inne zalecenia
Ten temat zawiera zalecenia dotyczące wydajności oprócz tych, które zostały omówione w tematach w sekcji Optymalizowanie wydajności aplikacji WPF.
Ten temat zawiera następujące sekcje:
Nieprzezroczystość na pędzlach i nieprzezroczystość elementów
Konfigurowanie usługi Font Cache Service w celu skrócenia czasu uruchamiania
Nieprzezroczystość na pędzlach i nieprzezroczystość elementów
Jeśli używasz Brush elementu , aby ustawić Fill element lub Stroke , lepiej ustawić Brush.Opacity wartość, a nie ustawienie właściwości elementu Opacity . Modyfikowanie właściwości elementu Opacity może spowodować utworzenie tymczasowej powierzchni WPF.
Nawigacja do obiektu
Obiekt NavigationWindow pochodzi z Window i rozszerza go o obsługę nawigacji zawartości, przede wszystkim przez agregowanie NavigationService i dziennik. Obszar klienta NavigationWindow można zaktualizować, określając jednolity identyfikator zasobu (URI) lub obiekt. W poniższym przykładzie przedstawiono obie metody:
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
Każdy NavigationWindow obiekt ma dziennik, który rejestruje historię nawigacji użytkownika w tym oknie. Jednym z celów dziennika jest umożliwienie użytkownikom śledzenia swoich kroków.
Podczas nawigowania przy użyciu identyfikatora URI (Uniform Resource Identifier) dziennik przechowuje tylko odwołanie do identyfikatora URI. Oznacza to, że za każdym razem, gdy ponownie przeglądasz stronę, jest ona dynamicznie rekonstruowana, co może być czasochłonne w zależności od złożoności strony. W takim przypadku koszt magazynu dziennika jest niski, ale czas ponownego tworzenia strony jest potencjalnie wysoki.
Podczas nawigowania po użyciu obiektu dziennik przechowuje całe drzewo wizualne obiektu. Oznacza to, że za każdym razem, gdy ponownie przeglądasz stronę, renderuje się natychmiast bez konieczności odtworzenia. W takim przypadku koszt przechowywania dziennika jest wysoki, ale czas ponownego tworzenia strony jest niski.
W przypadku korzystania z NavigationWindow obiektu należy pamiętać, jak obsługa rejestrowania wpływa na wydajność aplikacji. Aby uzyskać więcej informacji, zobacz Omówienie nawigacji.
Testowanie trafień na dużych powierzchniach 3D
Testowanie trafień na dużych powierzchniach 3D to bardzo intensywna operacja pod względem zużycia procesora CPU. Jest to szczególnie prawdziwe, gdy powierzchnia 3D animuje. Jeśli nie potrzebujesz testowania trafień na tych powierzchniach, wyłącz testowanie trafień. Obiekty, z których pochodzą UIElement , mogą wyłączyć testowanie trafień przez ustawienie IsHitTestVisible właściwości na false
.
CompositionTarget.Rendering, zdarzenie
Zdarzenie CompositionTarget.Rendering powoduje ciągłe animowanie WPF. Jeśli używasz tego zdarzenia, odłącz je przy każdej okazji.
Unikaj używania funkcji ScrollBarVisibility=Auto
Jeśli to możliwe, unikaj używania ScrollBarVisibility.Auto wartości właściwości HorizontalScrollBarVisibility
i VerticalScrollBarVisibility
. Te właściwości są definiowane dla RichTextBoxobiektów , ScrollVieweri TextBox oraz jako dołączone właściwości dla ListBox obiektu. Zamiast tego ustaw wartość ScrollBarVisibilityDisabled, Hiddenlub Visible.
Wartość jest przeznaczona dla przypadków, gdy spacja Auto jest ograniczona, a paski przewijania powinny być wyświetlane tylko w razie potrzeby. Na przykład może być przydatne użycie tej ScrollBarVisibility wartości z ListBox 30 elementami, a nie TextBox setkami wierszy tekstu.
Konfigurowanie usługi Font Cache Service w celu skrócenia czasu uruchamiania
Usługa WPF Font Cache udostępnia dane czcionek między aplikacjami WPF. Pierwsza uruchomiona aplikacja WPF uruchamia tę usługę, jeśli usługa nie jest jeszcze uruchomiona. Jeśli używasz systemu Windows Vista, możesz ustawić usługę "Windows Presentation Foundation (WPF) Font Cache 3.0.0.0" z "Manual" (wartość domyślna) na "Automatic (Delayed Start)" (Automatyczne (opóźnione uruchamianie)", aby skrócić początkowy czas uruchamiania aplikacji WPF.
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla