Share via


Vue d'ensemble des éléments de base

Mise à jour : novembre 2007

Un pourcentage élevé de classes dans Windows Presentation Foundation (WPF) est dérivé de quatre classes souvent appelées classes d'éléments de base dans la documentation Kit de développement logiciel (SDK). Ces classes sont UIElement, FrameworkElement, ContentElement et FrameworkContentElement. La classe DependencyObject est également liée, car qu'il s'agit d'une classe de base commune à UIElement et ContentElement

Cette rubrique comprend les sections suivantes.

  • API d'élément de base dans les classes WPF
  • Choisir de quel élément dériver
  • Autres classes de base
  • Rubriques connexes

API d'élément de base dans les classes WPF

UIElement et ContentElement sont dérivés de DependencyObject, par le biais de voies de communication quelque peu différentes. Le fractionnement à ce niveau porte sur la manière dont un UIElement ou un ContentElement sont utilisés dans une interface utilisateur et quel est leur fonction dans une application. UIElement comporte également Visual dans sa hiérarchie de classes, qui est une classe qui expose la prise en charge des graphiques de niveau inférieur sous-jacents au Windows Presentation Foundation (WPF). Visual fournit une infrastructure de rendu en définissant des zones d'écran rectangulaires indépendantes. En pratique, UIElement est pour les éléments qui prendront en charge un modèle objet plus important, prévus pour le rendu et la mise en page dans les zones pouvant être décrites comme des zones d'écran rectangulaires, et où le modèle de contenu est délibérément plus ouvert, afin de permettre différentes combinaisons d'éléments. ContentElement ne dérive pas de Visual; son modèle est qu'un ContentElement serait consommé par quelque chose d'autre, tel qu'un lecteur ou une visionneuse qui interpréterait ensuite les éléments et produirait le Visual complet pour que Windows Presentation Foundation (WPF) le consomme. Certaines classes UIElement sont prévues pour être des hôtes de contenu : elles fournissent l'hébergement et le rendu pour une ou plusieurs classes ContentElement (DocumentViewer est un exemple d'une telle classe). ContentElement est utilisé comme classe de base pour des éléments avec des modèles objets légèrement plus petits et qui portent davantage sur du texte, des informations ou du contenu de document susceptible d'être hébergé dans un UIElement.

Niveau d'infrastructure et niveau principal

UIElement sert de classe de base pour FrameworkElement et ContentElement sert de classe de base pour FrameworkContentElement. La raison pour ce niveau suivant de classes est de prendre en charge un niveau principal WPF qui est distinct d'un niveau d'infrastructure WPF, cette division existant aussi dans la manière dont les API sont répartis entre les assemblys PresentationCore et PresentationFramework. Le niveau d'infrastructure WPF représente une solution plus complète pour les besoins d'application de base, y compris l'implémentation du gestionnaire de présentation pour les présentations. Le niveau principal WPF offre un moyen d'utiliser la plupart de WPF sans utiliser la charge mémoire de l'assembly supplémentaire. La distinction entre ces niveaux est très rarement importante pour la plupart des scénarios de développement d'applications standard et, en général, il est conseillé de considérer WPFAPI dans son ensemble et de ne pas vous soucier de la différence entre le niveau d'infrastructure WPF et le niveau principal WPF. Vous devez pouvoir être renseigné sur les distinctions de niveau si votre conception d'applications choisit de remplacer de nombreuses fonctionnalités au niveau infrastructure WPF, par exemple si votre solution globale possède déjà ses propres implémentations de composition interface utilisateur (UI) et de mise en page.

Choisir de quel élément dériver

La méthode la plus pratique pour créer une classe personnalisée qui étend WPF consiste à dériver de l'une des classes WPF où vous récupérez le plus de fonctionnalités possibles que vous désirez par le biais de la hiérarchie de classes existante. Cette section répertorie les fonctionnalités qui sont fournies avec trois des plus importantes classes d'élément pour vous aider à décider de quelle classe hériter.

Si vous implémentez un contrôle, ce qui est souvent l'une des principales raisons pour dériver d'une classe WPF, vous souhaitez probablement dériver d'une classe qui soit un contrôle pratique, une classe de base de famille de contrôle, ou au moins de la classe de base Control. Pour obtenir de l'aide et des exemples pratiques, consultez Vue d'ensemble de la création de contrôles.

Si vous ne créez pas de contrôle mais que vous avez besoin de dériver d'une classe plus haute dans la hiérarchie, les sections suivantes sont prévues pour vous servir de guide des caractéristiques définies dans chaque classe d'élément de base.

Si vous créez une classe qui dérive de DependencyObject, vous héritez des fonctionnalités suivantes :

  • Prise en charge de GetValue et SetValue, et prise en charge du système de propriétés général.

  • Capacité d'utiliser les propriétés de dépendance et les propriétés attachées implémentées comme propriétés de dépendance .

Si vous créez une classe qui dérive de UIElement, vous héritez de la fonctionnalité suivante en plus de celle fournie par DependencyObject :

Si vous créez une classe qui dérive de FrameworkElement, vous héritez de la fonctionnalité suivante en plus de celle fournie par UIElement :

  • Prise en charge des styles et des tables de montage séquentiel. Pour plus d'informations, consultez Style et Vue d'ensemble des tables de montage séquentiel.

  • Prise en charge de la liaison de données. Pour plus d'informations, consultez Vue d'ensemble de la liaison de données.

  • Prise en charge des références de ressource dynamique. Pour plus d'informations, consultez Vue d'ensemble des ressources.

  • Prise en charge de l'héritage de la valeur de propriété, et d'autres indicateurs dans les métadonnées qui aident à faire part des conditions traitant des propriétés aux services d'infrastructure tels que la liaison de données, les styles ou l'implémentation de l'infrastructure de disposition. Pour plus d'informations, consultez Métadonnées de propriété d'infrastructure.

  • Le concept de l'arborescence logique . Pour plus d'informations, consultez Arborescences dans WPF.

  • Prise en charge pour l'implémentation pratique du système de disposition au niveau de l'infrastructure WPF, y compris une substitution OnPropertyChanged pouvant détecter des modifications aux propriétés qui influencent la disposition.

Si vous créez une classe qui dérive de ContentElement, vous héritez de la fonctionnalité suivante en plus de celle fournie par DependencyObject :

Si vous créez une classe qui dérive de FrameworkContentElement, vous obtenez la fonctionnalité suivante en plus de celle fournie par ContentElement :

  • Prise en charge des styles et des tables de montage séquentiel. Pour plus d'informations, consultez Style et Vue d'ensemble de l'animation.

  • Prise en charge de la liaison de données. Pour plus d'informations, consultez Vue d'ensemble de la liaison de données.

  • Prise en charge des références de ressource dynamique. Pour plus d'informations, consultez Vue d'ensemble des ressources.

  • Prise en charge de l'héritage de la valeur de propriété, et d'autres indicateurs dans les métadonnées qui aident à faire part des conditions traitant des propriétés aux services d'infrastructure tels que la liaison de données, les styles ou l'implémentation de l'infrastructure de disposition. Pour plus d'informations, consultez Métadonnées de propriété d'infrastructure.

  • Vous n'héritez pas de l'accès aux modifications du système de disposition (tel que ArrangeOverride). Les implémentations du système de disposition sont uniquement disponibles sur FrameworkElement. Toutefois, vous héritez d'une substitution OnPropertyChanged pouvant détecter des modifications des propriétés qui influencent la disposition et les signaler aux hôtes de contenu.

Les modèles de contenu sont documentés pour diverses classes. Le modèle de contenu pour une classe est l'un des facteurs dont vous devez tenir compte si vous souhaitez rechercher une classe appropriée à partir de laquelle dériver. Pour plus d'informations, consultez Modèles de contenu.

Autres classes de base

DispatcherObject

DispatcherObject fournit le support pour le modèle de thread WPF et active tous les objets créés pour les applications WPF à associer à un Dispatcher. Même si vous ne dérivez pas de UIElement, DependencyObject ou de Visual, vous devez envisager de dériver de DispatcherObject pour obtenir la prise en charge de ce modèle de thread. Pour plus d'informations, consultez Modèle de thread.

Visual

Visual implémente le concept d'un objet 2D qui requiert généralement une présentation visuelle dans une zone approximativement rectangulaire. Le rendu effectif d'un Visual se produit dans d'autres classes (il n'est pas autonome), mais la classe Visual fournit un type connu utilisé par les processus de rendu à différents niveaux. Visual implémente le test d'atteinte, mais il n'expose pas les événements qui signalent des tests d'atteinte positifs (ceux-ci se trouvent dans UIElement). Pour plus d'informations, consultez Programmation de la couche visuelle.

Freezable

Freezable simule l'immuabilité dans un objet mutable en fournissant les moyens de générer des copies de l'objet lorsqu'un objet immuable est requis ou souhaité pour des raisons de performance. Le type Freezable fournit une base commune pour certains éléments graphiques tels que les géométries et les pinceaux, ainsi que les animations. Particulièrement, un Freezable n'est pas un Visual; il peut contenir des propriétés qui deviennent des sous-propriétés lorsque le Freezable est appliqué pour remplir une valeur de propriété d'un autre objet, et ces sous-propriétés peuvent affecter le rendu. Pour plus d'informations, consultez Vue d'ensemble des objets Freezable.

Animatable

Animatable est une classe dérivée Freezable qui ajoute spécifiquement la couche de contrôle d'animation et quelques membres utilitaires afin que les propriétés actuellement animées puissent être distinguées des propriétés non animées.

Contrôle

Control est la classe de base prévue pour le type d'objet appelé tantôt contrôle ou composant, selon la technologie. En général, les classes de contrôle WPF sont des classes qui représentent directement un contrôle d'interface utilisateur ou qui participent étroitement à la composition de contrôle. La principale fonctionnalité que Control active est la création de modèles de contrôle.

Voir aussi

Concepts

Vue d'ensemble des propriétés de dépendance

Vue d'ensemble de la création de contrôles

Architecture de WPF

Référence

Control