Modifications apportées à l'extensibilité dans Visual Studio 2010
Le Concepteur WPF pour Visual Studio fournit une plateforme sophistiquée pour l'implémentation d'expériences utilisateur de conception personnalisées pour les contrôles WPF et Silverlight. L'API d'Extensibilité du Concepteur WPF a considérablement évolué depuis sa version initiale dans Visual Studio 2008. Les sections suivantes décrivent les modifications dans Extensibilité du Concepteur WPF pour Visual Studio 2010.
Prise en charge des versions Silverlight et multiplateformes
Dans Visual Studio 2008, les temps de conception des contrôles ne pouvaient cibler que la dernière version de la plateforme WPF. Dans Visual Studio 2010, cette prise en charge est étendue à l'ensemble des plateformes, y compris la prise en charge au moment du design pour WPF 3.5, WPF 4.0, Silverlight 3 et les versions de plateformes à venir. Comme la même API d'extensibilité existe pour toutes ces plateformes, les auteurs des temps de conception des contrôles peuvent facilement écrire une expérience utilisateur et la partager sur l'ensemble des exécutions de contrôles pour chaque plateforme.
Prise en charge dans Expression Blend
Vos implémentations de temps de conception des contrôles peuvent maintenant cibler Expression Blend, à l'aide de la même interface d'extensibilité disponible dans Visual Studio. Vous pouvez décider d'expédier des expériences utilisateur séparées ou communes au moment du design pour les deux environnements de création.
Enregistrement de métadonnées
La différence la plus significative de l'API d'extensibilité est que l'interface IRegisterMetadata a été remplacée par l'interface IProvideAttributeTable. Cette modification, associée à la prise en charge multiplateforme, a entraîné des modifications fondamentales dans l'API d'extensibilité. Cela signifie que les implémentations existantes de temps de conception des contrôles pour Visual Studio 2008 ne se chargeront pas dans Visual Studio 2010.
De plus, dans Visual Studio 2010, vous utilisez l'attribut ProvideMetadataAttribute pour indiquer qu'un assembly au moment du design fournit des métadonnées au concepteur.
Nouveaux points d'extensibilité
La nouvelle API d'extensibilité prend également en charge de nouvelles expériences utilisateur au moment du design, parmi lesquelles :
Dans la fenêtre Propriétés, prise en charge de l'accès au modèle à partir d'éditeurs de catégories. Cette modification est associée à l'élévation de propriétés communes dans la partie supérieure de la liste des catégories, afin de permettre aux auteurs des contrôles de fournir de riches expériences utilisateur de modification dans la fenêtre Propriétés.
Nouvelles méthodes utilitaires AdornerPanel facilitant le positionnement d'ornements sur le contrôle personnalisé.
Nouveau modèle de programmation pour le partage d'implémentations au moment du design entre différents outils de conception, tels que Visual Studio et Expression Blend.
Nouveau modèle de programmation pour le partage d'implémentations au moment du design entre plusieurs versions cible du .NET Framework.
Comparaison de l'extensibilité entre Visual Studio 2008 et Visual Studio 2010
Le tableau suivant résume les différences entre Visual Studio 2008 et Visual Studio 2010 pour la création d'expériences personnalisées au moment du design.
Visual Studio 2008 |
Visual Studio 2010 |
---|---|
Pour inscrire des types au moment du design, implémentez l'interface IRegisterMetadata et utilisez la classe MetadataStore. |
Pour inscrire des types au moment du design, implémentez l'interface IProvideAttributeTable et appelez la méthode CreateTable. |
Il n'est pas nécessaire d'ajouter des attributs au niveau de l'assembly. |
Vous devez marquer les assemblys au moment du design avec l'attribut ProvideMetadataAttribute. |
Pour associer un type de concepteur à un élément graphique, utilisez la méthode GetImage sur NewItemFactory, qui peut retourner différents types d'éléments. |
Pour associer un type de concepteur à une icône, utilisez la méthode GetImageStream pour retourner une bitmap. Seules les bitmaps sont prises en charge. |
Pour accéder aux propriétés de modèle, utilisez la propriété de dépendance, par exemple : ModelProperty backgroundProperty = adornedControlModel.Properties[Control.BackgroundProperty]; |
Pour accéder aux propriétés de modèle, utilisez le nom de la propriété de dépendance, par exemple : ModelProperty backgroundProperty = adornedControlModel.Properties["Background"]; De plus, vous pouvez définir un PropertyIdentifier, qui est une combinaison type/chaîne. PropertyIdentifier est utilisé avec des propriétés jointes lorsqu'une recherche de nom simple ne suffit pas. |
Pour distinguer l'espace de disposition de l'espace de restitution, utilisez la classe AdornerCoordinateSpaces. |
La classe AdornerCoordinateSpaces n'est pas utilisée. |
Pour spécifier l'emplacement de l'ornement du contenu, utilisez la classe AdornerPlacementCollection. |
Pour spécifier l'emplacement de l'ornement du contenu, utilisez les méthodes SetAdornerHorizontalAlignment, SetAdornerVerticalAlignment et SetAdornerMargin. La classe AdornerPlacementCollection est conservée pour des raisons de compatibilité descendante. |