Nouveautés de WPF version 4.5
Cette rubrique contient des informations sur les fonctionnalités nouvelles et améliorées de Windows Presentation Foundation (WPF) version 4.5.
Cette rubrique contient les sections suivantes :
Amélioration des performances lors de l’affichage de grands jeux de données groupées
Accès aux collections sur les threads sans interface utilisateur
Mise à jour automatique de la source d’une liaison de données
Récupération des informations de liaison de données à partir d’une expression de liaison
Amélioration de la prise en charge pour l’établissement d’une référence faible à un événement
Contrôle de ruban
WPF 4.5 est fourni avec un contrôle qui héberge une Ribbon barre d’outils Accès rapide, un menu d’application et des onglets. Pour plus d’informations, consultez l’article Vue d’ensemble du ruban.
Amélioration des performances lors de l’affichage de grands jeux de données groupées
La virtualisation de l’interface utilisateur survient lorsqu’un sous-ensemble d’éléments d’interface utilisateur sont générés à partir d’un plus grand nombre d’éléments de données, selon les éléments visibles à l’écran. Définit VirtualizingPanel la propriété jointe qui active la virtualisation de l’interface IsVirtualizingWhenGrouping utilisateur pour les données groupées. Pour plus d’informations sur le regroupement de données, consultez Comment : trier et grouper des données à l’aide d’une vue en XAML. Pour plus d’informations sur la virtualisation des données groupées, consultez la IsVirtualizingWhenGrouping propriété jointe.
Nouvelles fonctionnalités destinées au VirtualizingPanel
Vous pouvez spécifier si un VirtualizingPanel, tel que le VirtualizingStackPanel, affiche des éléments partiels à l’aide de la ScrollUnit propriété jointe. S’il ScrollUnit est défini sur Item, le VirtualizingPanel seul élément affiche les éléments qui sont complètement visibles. Si ScrollUnit la valeur est définie Pixel, l’élément VirtualizingPanel peut afficher des éléments partiellement visibles.
Vous pouvez spécifier la taille du cache avant et après la fenêtre d’affichage lors VirtualizingPanel de la virtualisation à l’aide de la CacheLength propriété jointe. Le cache est la quantité d’espace au-dessus ou au-dessous de la fenêtre d’affichage dans laquelle les éléments ne sont pas virtualisés. L’utilisation d’un cache pour éviter de générer des éléments d’interface utilisateur à mesure qu’ils défilent peut améliorer les performances. Le cache est alimenté à un niveau de priorité inférieure afin que l’application ne cesse pas de répondre lors de l’opération. La VirtualizingPanel.CacheLengthUnit propriété détermine l’unité de mesure utilisée par VirtualizingPanel.CacheLength.
Liaison aux propriétés statiques
Vous pouvez utiliser des propriétés statiques comme source d’une liaison de données. Le moteur de liaison de données reconnaît le changement de valeur d’une propriété lors du déclenchement d’un événement statique. Par exemple, si la classe SomeClass
définit une propriété statique appelée MyProperty
, SomeClass
peut définir un événement statique déclenché lorsque la valeur de MyProperty
varie. L’événement statique peut utiliser une des signatures suivantes.
public static event EventHandler MyPropertyChanged;
public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
Notez que dans le premier cas, la classe expose un événement statique nommé PropertyNameChanged
qui passe EventArgs au gestionnaire d’événements. Dans le deuxième cas, la classe expose un événement statique nommé StaticPropertyChanged
qui passe PropertyChangedEventArgs au gestionnaire d’événements. Une classe qui implémente la propriété statique peut choisir de déclencher des notifications de modification de propriété à l’aide d’une des deux méthodes.
Accès aux collections sur les threads sans interface utilisateur
WPF permet d’accéder et de modifier des collections de données sur des threads autres que celui qui a créé la collection. Cela permet d’utiliser un thread d’arrière-plan pour recevoir des données provenant d’une source externe, comme une base de données et afficher les données sur le thread d’interface utilisateur. En utilisant un autre thread pour modifier la collection, l’interface utilisateur reste réactive à une interaction utilisateur.
Validation des données de façon synchrone et asynchrone
L’interface INotifyDataErrorInfo permet aux classes d’entités de données d’implémenter des règles de validation personnalisées et d’exposer les résultats de validation de manière asynchrone. Cette interface prend également en charge les objets d’erreur personnalisés, plusieurs erreurs par propriété, les erreurs d’inter-propriétés et les erreurs au niveau de l’entité. Pour plus d’informations, consultez INotifyDataErrorInfo.
Mise à jour automatique de la source d’une liaison de données
Si vous utilisez une liaison de données pour mettre à jour une source de données, vous pouvez utiliser la Delay propriété pour spécifier une durée de transmission après la modification de la propriété sur la cible avant la mise à jour de la source. Par exemple, supposons que vous disposez d’une Slider propriété dont les Value données de propriété sont liées de deux manières à une propriété d’un objet de données et que la UpdateSourceTrigger propriété est définie PropertyChangedsur . Dans cet exemple, lorsque l’utilisateur déplace le Slider, la source est mise à jour pour chaque pixel déplacé Slider . L’objet source a généralement besoin de la valeur du curseur uniquement lorsque le curseur cesse de Value changer. Pour empêcher la mise à jour de la source trop souvent, utilisez Delay pour spécifier que la source ne doit pas être mise à jour tant qu’un certain temps s’écoule après que le pouce cesse de se déplacer.
Liaison aux types qui implémentent ICustomTypeProvider
WPF prend en charge la liaison de données aux objets qui implémentent ICustomTypeProvider, également appelés types personnalisés. Vous pouvez utiliser des types personnalisés dans les cas suivants.
PropertyPath En tant que liaison de données. Par exemple, la Path propriété d’un Binding peut référencer une propriété d’un type personnalisé.
Valeur de la DataType propriété.
En tant que type qui détermine les colonnes générées automatiquement dans un DataGrid.
Récupération des informations de liaison de données à partir d’une expression de liaison
Dans certains cas, vous pouvez obtenir des informations sur les BindingExpressionBinding objets source et cible de la liaison. De nouvelles API ont été ajoutées pour vous permettre d’obtenir l’objet source ou cible ou la propriété associée. Lorsque vous disposez d’un BindingExpression, utilisez les API suivantes pour obtenir des informations sur la cible et la source.
Pour trouver cette valeur de la liaison | Utilisez cette API |
---|---|
Objet cible | BindingExpressionBase.Target |
Propriété cible | BindingExpressionBase.TargetProperty |
Objet source | BindingExpression.ResolvedSource |
Propriété source | BindingExpression.ResolvedSourcePropertyName |
Indique si le membre BindingExpression appartient à un BindingGroup | BindingExpressionBase.BindingGroup |
Propriétaire d’un BindingGroup | Owner |
Vérification d’un objet DataContext valide
Il existe des cas où le DataContext conteneur d’un élément dans un ItemsControl conteneur devient déconnecté. Un conteneur d’éléments est l’élément d’interface utilisateur qui affiche un élément dans un ItemsControl. Lorsqu’une ItemsControl donnée est liée à une collection, un conteneur d’éléments est généré pour chaque élément. Dans certains cas, les conteneurs d’éléments sont supprimés de l’arborescence d’éléments visuels. Deux cas typiques où un conteneur d’éléments est supprimé sont lorsqu’un élément est supprimé de la collection sous-jacente et lorsque la virtualisation est activée sur le ItemsControl. Dans ces cas, la DataContext propriété du conteneur d’éléments est définie sur l’objet sentinel retourné par la BindingOperations.DisconnectedSource propriété statique. Vous devez case activée si l’objet DataContext est égal à l’objet DisconnectedSource avant d’accéder au DataContext conteneur d’éléments.
Repositionnement des données au fur et à mesure du changement des valeurs des données (mise en forme active)
Une collection de données peut être regroupée, triée ou filtrée. WPF 4.5 permet la réorganisation des données lorsque les données sont modifiées. Par exemple, supposons qu’une application utilise une DataGrid application pour répertorier les actions d’un marché boursier et que les actions sont triées par valeur boursière. Si le tri en direct est activé sur les actions, CollectionViewla position d’un stock dans les DataGrid déplacements lorsque la valeur du stock devient supérieure ou inférieure à la valeur d’un autre stock. Pour plus d’informations, consultez l’interface ICollectionViewLiveShaping .
Amélioration de la prise en charge pour l’établissement d’une référence faible à un événement
L’implémentation du modèle d’événement faible est désormais plus facile car les abonnés aux événements peuvent y participer sans avoir à implémenter d’interface supplémentaire. La classe générique WeakEventManager permet également aux abonnés de participer au modèle d’événement faible si un événement dédié WeakEventManager n’existe pas pour un certain événement. Pour plus d’informations, consultez Modèles d’événement faible.
Nouvelles méthodes pour la classe Dispatcher
La classe Dispatcher définit de nouvelles méthodes pour les opérations synchrones et asynchrones. La méthode synchrone Invoke définit des surcharges qui prennent un ou Func<TResult> un Action paramètre. La nouvelle méthode asynchrone, InvokeAsyncprend également un Action ou Func<TResult> en tant que paramètre de rappel et retourne un DispatcherOperation ou DispatcherOperation<TResult>. Les DispatcherOperation classes et DispatcherOperation<TResult> les classes définissent une Task propriété. Lorsque vous appelezInvokeAsync, vous pouvez utiliser l’mot clé await
avec l’un DispatcherOperation ou l’autre Taskassocié. Si vous avez besoin d’attendre de façon synchrone pour l’élément Task retourné par un DispatcherOperation ou DispatcherOperation<TResult>, appelez la DispatcherOperationWait méthode d’extension. L’appel Task.Wait entraîne un blocage si l’opération est mise en file d’attente sur un thread appelant. Pour plus d’informations sur l’utilisation d’une Task opération asynchrone, consultez Le parallélisme des tâches (bibliothèque parallèle de tâches).
Extensions de balisage pour les événements
WPF 4.5 prend en charge les extensions de balisage pour les événements. Bien que WPF ne définisse pas d’extension de balisage à utiliser pour les événements, des tiers sont en mesure de créer une extension de balisage qui peut être utilisée avec les événements.
Voir aussi
.NET Desktop feedback