Udostępnij za pośrednictwem


Optymalizowanie 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

Jeśli używasz Brush do ustawiania Fill lub Stroke elementu, lepiej ustawić wartość Brush.Opacity, a nie ustawienie właściwości Opacity elementu. Modyfikowanie właściwości Opacity elementu może spowodować utworzenie powierzchni tymczasowej w WPF.

Obiekt NavigationWindow dziedziczy po Window i rozszerza go, wspierając nawigację po zawartości, przede wszystkim zestawiając 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 obiekt NavigationWindow 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 przechowywania dziennika jest niski, ale czas odtworzenia 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 wracasz na stronę, strona renderuje się od razu bez konieczności rekonstrukcji. W takim przypadku koszt przechowywania dziennika jest wysoki, ale czas ponownego tworzenia strony jest niski.

W przypadku korzystania z obiektu NavigationWindow należy pamiętać, jak obsługa rejestrowania wpływa na wydajność aplikacji. Aby uzyskać więcej informacji, zobacz omówienie nawigacji .

Testowanie kolizji na dużych powierzchniach 3D

Testowanie trafień na dużych powierzchniach 3D jest operacją bardzo obciążającą pod względem zużycia procesora. Jest to szczególnie prawdziwe, gdy powierzchnia 3D jest animowana. Jeśli nie potrzebujesz testowania trafień na tych powierzchniach, wyłącz je. Obiekty pochodzące z UIElement mogą wyłączać testowanie trafień przez ustawienie właściwości IsHitTestVisible na wartość false.

Zdarzenie CompositionTarget.Rendering

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, należy unikać używania wartości ScrollBarVisibility.Auto dla właściwości HorizontalScrollBarVisibility i VerticalScrollBarVisibility. Te właściwości są definiowane dla obiektów RichTextBox, ScrollVieweri TextBox oraz jako dołączona właściwość obiektu ListBox. Zamiast tego ustaw ScrollBarVisibility na Disabled, Hiddenlub Visible.

Wartość Auto jest przeznaczona dla przypadków, gdy ilość miejsca jest ograniczona, a paski przewijania powinny być wyświetlane tylko w razie potrzeby. Na przykład, może być przydatne użycie tej wartości ScrollBarVisibility z ListBox liczbą 30 elementów zamiast TextBox z 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ż