Optimisation des performances : autres recommandations

Cette rubrique fournit des recommandations pour améliorer les performances en plus de celles abordées dans les rubriques de la section Optimisation des performances des applications WPF.

Cette rubrique contient les sections suivantes :

Opacité au niveau des pinceaux et opacité au niveau des éléments

Lorsque vous utilisez un Brush pour définir le Fill ou Stroke l’un d’un élément, il est préférable de définir la Brush.Opacity valeur plutôt que de définir la propriété de Opacity l’élément. La modification de la propriété d’un Opacity élément peut entraîner la création d’une surface temporaire par WPF.

L’objet NavigationWindow dérive Window et l’étend avec la prise en charge de la navigation de contenu, principalement en agrégeant NavigationService et en journal. Vous pouvez mettre à jour la zone cliente en NavigationWindow spécifiant un URI (Uniform Resource Identifier) ou un objet. L'exemple suivant illustre les deux méthodes :

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

Chaque NavigationWindow objet a un journal qui enregistre l’historique de navigation de l’utilisateur dans cette fenêtre. Un des objectifs du journal est de permettre aux utilisateurs de retracer leurs étapes.

Lorsque vous naviguez à l’aide d’un URI (Uniform Resource Identifier), le journal stocke uniquement la référence URI (Uniform Resource Identifier). Cela signifie que chaque fois que vous revisitez la page, elle est reconstruite dynamiquement, ce qui peut prendre beaucoup de temps selon la complexité de la page. Dans ce cas, le coût de stockage du journal est faible, mais le temps de reconstitution de la page est élevé.

Quand vous naviguez à l’aide d’un objet, le journal stocke intégralement l’arborescence de visuels de l’objet. Cela signifie que chaque fois que vous visitez la page, elle s’affiche immédiatement sans avoir à être reconstruite. Dans ce cas, le coût de stockage du journal est élevé, mais le temps de reconstitution de la page est faible.

Lorsque vous utilisez l’objet NavigationWindow , vous devez garder à l’esprit comment la prise en charge de journalisation a un impact sur les performances de votre application. Pour plus d’informations, consultez Vue d’ensemble de la navigation.

Test de positionnement sur les grandes surfaces 3D

Le test de positionnement sur les grandes surfaces 3D est une opération qui affecte considérablement les performances en utilisant une grande part du processeur. Cela est particulièrement vrai quand la surface 3D est animée. Si vous n’avez pas besoin de tester le positionnement sur ces surfaces, désactivez le test de positionnement. Les objets dérivés de peuvent désactiver le test de UIElement positionnement en définissant la IsHitTestVisible propriété sur false.

Événement CompositionTarget.Rendering

L’événement CompositionTarget.Rendering entraîne l’animation continue de WPF. Si vous utilisez cet événement, détacher-le dès que possible.

Éviter l’utilisation de ScrollBarVisibility=Auto

Dans la mesure du possible, évitez d’utiliser la ScrollBarVisibility.Auto valeur pour les propriétés et VerticalScrollBarVisibility les HorizontalScrollBarVisibility propriétés. Ces propriétés sont définies pour RichTextBox, ScrollVieweret TextBox les objets, et en tant que propriété jointe pour l’objet ListBox . Au lieu de cela, définissez ScrollBarVisibility sur Disabled, Hiddenou Visible.

La Auto valeur est destinée aux cas où l’espace est limité et que les barres de défilement ne doivent être affichées que si nécessaire. Par exemple, il peut être utile d’utiliser cette ScrollBarVisibility valeur avec un ListBox nombre de 30 éléments par opposition à des TextBox centaines de lignes de texte.

Configurer le service de mise en cache de polices pour réduire le temps de démarrage

Le service de cache de police WPF partage les données de police entre les applications WPF. La première application WPF que vous exécutez démarre ce service si le service n’est pas déjà en cours d’exécution. Si vous utilisez Windows Vista, vous pouvez définir le service « Windows Presentation Foundation (WPF) Font Cache 3.0.0.0.0 » de « Manual » (par défaut) sur « Automatique (Démarrage différé) » pour réduire le temps de démarrage initial des applications WPF.

Voir aussi