Cette documentation est archivée et n’est pas conservée.

Nouveautés de Windows Presentation Foundation version 3.5

Mise à jour : novembre 2007

Cette rubrique traite brièvement des différences majeures entre les versions 3.0 et 3.5 de Windows Presentation Foundation (WPF). 

Cette rubrique comprend les sections suivantes.

Compatibilité ascendante et descendante

Une application générée avec WPF 3.0 s'exécutera sur le runtime WPF 3.5.

Une application générée avec WPF 3.5 s'exécutera sur le runtime 3.0 si l'application utilise uniquement des fonctionnalités disponibles dans WPF 3.0.

WPF 3.5 définit un nouvel espace de noms XML, http://schemas.microsoft.com/netfx/2007/xaml/presentation Lorsque vous générez une application à l'aide de WPF 3.5, vous pouvez utiliser cet espace de noms ou celui défini dans WPF 3.0.

Ciblage d'un runtime spécifique

Les applications générées avec WPF 3.0 peuvent cibler toute version de l'infrastructure supérieure ou égale à la version par rapport à laquelle l'application avait été générée à l'origine. Pour plus d'informations, consultez Comment : utiliser un fichier de configuration de l'application pour cibler une version du .NET Framework.

Les améliorations suivantes ont été apportées au modèle d'application :

  • Support de complément complet pour la prise en charge des compléments visuels et non visuels d'applications autonomes et les applications du navigateur XAML (XBAP).

  • Les applications XBAP peuvent désormais s'exécuter dans Firefox.

  • Des cookies peuvent être partagés entre des applications XBAP et Web du même site d'origine.

  • Expérience utilisateur IntelliSense XAML améliorée pour une productivité accrue.

  • Meilleure prise en charge de la localisation.

Compléments visuels et non visuels dans WPF

Une application extensible expose ses fonctionnalités de sorte à permettre à d'autres applications de s'intégrer à ses fonctionnalités et de les prolonger. Les compléments sont une manière commune pour les applications d'exposer leur extensibilité. Dans le .NET Framework, un complément est généralement un assembly emballé comme une bibliothèque de liaisons dynamiques (.dll). Le complément est chargé dynamiquement par une application hôte lors de l'exécution pour utiliser et prolonger les services exposés par l'hôte. L'hôte et le complément interagissent par le biais d'un contrat bien connu, en général une interface commune publiée par l'application hôte.

Dès qu'une application prend en charge des compléments, des développeurs internes ou tiers peuvent créer des compléments pour elle. Il existe de nombreux exemples de ces types d'applications, y compris Office, Visual Studio et le Lecteur Windows Media Microsoft. Par exemple, la prise en charge du complément Lecteur Windows Media Microsoft permet à des tiers de créer des décodeurs DVD et des encodeurs MP3.

Le .NET Framework implémente les blocs de construction pour permettre à des applications de prendre en charge des compléments. Toutefois, le temps requis et la complexité de la génération de cette prise en charge peuvent se révéler coûteux, compte tenu du fait que la conception d'un complément robuste doit gérer les aspects suivants :

  • Découverte : recherche de compléments adhérant aux contrats pris en charge par les applications hôte.

  • Activation : chargement, exécution et établissement de la communication avec les compléments.

  • Isolation : utilisation de domaines ou de processus d'application pour établir des limites d'isolation protégeant les applications des problèmes potentiels de sécurité et d'exécution avec les compléments.

  • Communication : autorisation pour les compléments et les applications d'hôte à communiquer entre eux au travers des limites d'isolation par des méthodes d'appel et le passage de données.

  • Gestion de la durée de vie : chargement et déchargement des domaines et des processus d'application de façon propre et prédictible (consultez Vue d'ensemble des domaines d'application).

  • Suivi des versions : garantie que les applications hôte et les compléments peuvent encore communiquer lorsque de nouvelles versions de l'un ou l'autre sont créées.

Plutôt que de vous obliger à résoudre ces problèmes, le .NET Framework inclut désormais un jeu de types, situé dans l'espace de noms System.AddIn, connu collectivement sous le vocable « modèle de complément ». Le modèle de complément .NET Framework fournit des fonctionnalités pour chacun des comportements des compléments communs répertoriés ci-dessus.

Dans certains scénarios, toutefois, il peut être également souhaitable de permettre aux compléments de s'intégrer aux interfaces utilisateur d'application hôte et de les prolonger. WPF étend le modèle de complément .NET Framework pour activer cette prise en charge, générée autour de l'affichage d'un FrameworkElement détenu par un complément dans les interfaces utilisateur d'une application hôte. Cela permet aux développeurs WPF de créer des applications pour prendre en charge les scénarios courants suivants :

  • Application de style messagerie fournissant des services supplémentaires à l'aide de compléments tiers associés.

  • Applications de jeu conçues pour héberger des jeux de tiers.

  • Applications du lecteur de contenu hébergeant des publicités.

  • Applications Web hybrides hébergeant des modules arbitraires ; par exemple, le volet Windows.

Et des compléments WPF peuvent être hébergés à la fois par des applications autonomes et XBAP.

Pour plus d'informations, consultez Vue d'ensemble des compléments Windows Presentation Foundation.

Prise en charge de Firefox pour XBAP

Un complément pour WPF 3.5 permet d'exécuter les applications XBAP à partir de Firefox 2.0, une fonctionnalité qui n'est pas disponible dans WPF 3.0. Les principales fonctionnalités sont les suivantes :

  • Si Firefox 2.0 est votre navigateur par défaut, les applications XBAP honorent la configuration. Autrement dit, Internet Explorer n'est pas utilisé pour XBAP si Firefox 2.0 est la valeur par défaut.

  • Les mêmes fonctionnalités de sécurité disponibles pour les applications XBAP exécutant Internet Explorer sont disponibles pour les applications XBAP s'exécutant dans Firefox 2.0, y compris le « sandboxing » de sécurité de confiance partielle. Les fonctionnalités de sécurité supplémentaires fournies par le navigateur sont spécifiques au navigateur.

Cookies

Les applications WPF autonomes et XBAP peuvent créer, obtenir et supprimer les sessions et les cookies persistants. Dans WPF 3.5, les cookies persistants peuvent être partagés entre des applications XBAP, des serveurs Web et des fichiers HTML qui ont le même site d'origine.

Pour plus d'informations sur les cookies, consultez Vue d'ensemble de la navigation.

Améliorations de Visual Studio IntelliSense

Vous pouvez maintenant ajouter un nouvel élément XAML à l'aide de l'éditeur Visual StudioXAML, donnez-lui un nom (à l'aide de l'attribut Name), faites-y référence dans le code-behind et consultez ses membres dans l'explorateur IntelliSense.

Localisation

WPF 3.5 ajoute la prise en charge pour les scripts suivants :

  • Bengali

  • Devanagari

  • Gujarati

  • Gurmukhi

  • Kannada

  • Malayalam

  • Oriya

  • Tamoul

  • Télougou

Pour plus d'informations, consultez Globalisation pour Windows Presentation Foundation.

Prise en charge de l'éditeur de méthode d'entrée IME (Input Method Editor) pour la zone de texte

La classe FrameworkTextComposition possède désormais les propriétés suivantes :

Un FrameworkTextComposition est utilisé comme propriété TextCompositionEventArgs.TextComposition lorsque l'utilisateur introduit le texte dans un TextBox en utilisant un IME et que l'événement TextInput, TextInputUpdate ou TextInputStart se produit.

Vous avez maintenant la possibilité de mettre en cache des images téléchargées sur HTTP dans le cache local de fichiers temporaires de Microsoft Internet Explorer, afin que les requêtes suivantes portant sur l'image proviennent du disque local, plutôt que d'Internet. En fonction de la taille de vos images, l'amélioration des performances réseau peut être significative. Les membres suivants ont été ajoutés pour prendre en charge cette fonctionnalité :

L'événement BitmapSource.DecodeFailed a été ajouté pour vous notifier lorsqu'une image ne parvient pas à se charger, en raison d'un en-tête endommagé.

Les nouvelles fonctionnalités suivantes ont été ajoutées au modèle objet 3D.

Prise en charge des entrées, du focus et des événements en 3D

Le modèle objet 3D prend maintenant en charge des concepts UIElement tels que les entrées, le focus et les événements. Les nouvelles classes qui fournissent ces services sont UIElement3D et ses classes dérivées ContainerUIElement3D et ModelUIElement3D. Pour obtenir des exemples, consultez Sphère UIElement3D, exemple et Gestion des événements dans des objets 3D, exemple.

Contenu 2D interactif sur objet 3D

La nouvelle classe Viewport2DVisual3D fournit la prise en charge requise pour placer un contenu 2D interactif sur un objet 3D. Pour obtenir un exemple, consultez Contenu interactif 2D sur un objet 3D, exemple.

Nouveaux services de transformation

Les nouvelles classes GeneralTransform3D, GeneralTransform2DTo3D et GeneralTransform3DTo2D permettent des transformations entre des objets Visual3D et de 2D en 3D et vice versa.

Les améliorations suivantes ont été apportées aux liaisons de données :

  • Un nouveau mécanisme de débogage simplifie la résolution des problèmes de liaisons de données.

  • Le modèle de données autorise la validation sur la couche métier en assurant la prise en charge de l'interface IDataErrorInfo. De plus, le modèle de validation prend maintenant en charge l'utilisation de la syntaxe de propriété pour définir des règles de validation.

  • Le modèle de liaison de données prend maintenant en charge LINQ et XLINQ.

Nouveau mécanisme de débogage

Il est maintenant plus facile de déboguer les liaisons de données. Vous pouvez définir la nouvelle propriété PresentationTraceSources.TraceLevel attachée sur un objet connexe à la liaison pour recevoir des informations à propos de l'état d'une liaison spécifique. PresentationTraceSources est une classe statique dans l'espace de noms System.Diagnostics.

Prise en charge de IDataErrorInfo

Le modèle de validation des données prend maintenant en charge l'interface IDataErrorInfo pour permettre à un objet métier de déterminer la validation de l'entrée. L'interface définit un indexeur qui prend un nom de propriété et retourne une chaîne. La règle de validation DataErrorValidationRule, qui vérifie les exceptions retournées par l'indexeur, a été ajoutée. Pour obtenir un exemple, consultez Validation de la couche métier, exemple.

Syntaxe alternative pour la validation des données

Les classes Binding et MultiBinding ont deux nouvelles propriétés, ValidatesOnExceptions et ValidatesOnDataErrors. Ces deux propriétés fournissent une alternative à la définition de ExceptionValidationRule ou DataErrorValidationRule dans la syntaxe d'élément.

Prise en charge de LINQ et XLINQ

Des améliorations ont été apportées à BindingListCollectionView pour assurer une meilleure prise en charge pour la création d'une liaison avec une collection de type BindingList<T> ainsi que pour LINQ. Le comportement des liaisons de données avec un CollectionView sur un IEnumerable a également été amélioré afin d'assurer une meilleure performance et une meilleure prise en charge pour créer une liaison avec les résultats produits par LINQ. Pour obtenir un exemple de LINQ, consultez Requête LINQ, exemple.

De plus, le modèle de liaison de données assure également la prise en charge de XLINQ.

RichTextBox

Le RichTextBox conserve maintenant des objets TextElement personnalisés lorsqu'il enregistre le TextElement et lorsque le TextElement participe aux opérations de presse-papiers. Ce comportement est pris en charge par les nouvelles API suivantes :

Le RichTextBox a une nouvelle propriété appelée IsDocumentEnabled. Lorsque IsDocumentEnabled est true, des éléments de l'interface utilisateur, tels que les boutons et les liens hypertexte, acceptent l'entrée d'utilisateur.

TextBoxBase

TextBoxBase a une nouvelle propriété appelée UndoLimit, qui spécifie le nombre maximal d'actions que le contrôle référence.

SoundPlayerAction

SoundPlayerAction peut maintenant charger des fichiers audio qui peuvent être identifiés à la fois par des URI (Uniform Resource Identifiers) à en-tête pack relatifs et absolus :

  • Fichiers de ressources : fichiers audio avec une action de génération de Resource.

  • Fichiers de contenu : fichiers audio avec une action de génération de Content.

  • Fichiers du site d'origine : fichiers audio avec une action de génération de None.

Accesseurs set protégés

Les accesseurs set des propriétés suivantes sont maintenant protégés plutôt qu'internes :

FlowDocumentPageViewer, FlowDocumentScrollViewer et FlowDocumentReader ont chacun une nouvelle propriété publique appelée Selection. La propriété obtient le TextSelection qui représente le contenu sélectionné dans le document.

L'infrastructure d'annotations expose maintenant les fonctionnalités permettant de mettre en correspondance des annotations et les objets annotés correspondants. Une nouvelle interface, IAnchorInfo, a été ajoutée. De plus, une nouvelle méthode, GetAnchorInfo, qui retourne un objet IAnchorInfo a été ajoutée à la classe AnnotationHelper.

Ces nouvelles additions activent des scénarios dans lesquels vous devez accéder à l'objet auquel l'objet d'annotation est ancré. Pour obtenir un exemple, consultez Visionneuse de documents annotés avec le volet Commentaires, exemple.

Afficher: