Udostępnij za pośrednictwem


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

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.

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ż