Partager via


Vue d'ensemble des éléments de base

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 du 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. La différence à ce niveau s'explique en termes d'utilisation de UIElement ou ContentElement dans une interface utilisateur et de leur utilité dans une application. UIElement a également Visual dans sa hiérarchie de classes, qui est une classe qui expose la prise en charge de graphiques de niveau inférieur sous-jacente à Windows Presentation Foundation (WPF). Visual fournit une infrastructure de rendu en définissant des régions d'écran rectangulaires indépendantes. Dans la pratique, UIElement est destiné aux éléments qui prendront en charge un plus modèle d'objet plus important, qui sont sensés être rendus et mis en forme dans des régions pouvant être décrites en tant que régions d'écran rectangulaires, et dans lesquels le modèle de contenu est délibérément plus ouvert pour permettre différentes combinaisons d'éléments. ContentElement ne dérive pas de Visual ; selon son modèle, un ContentElement doit être consommé par autre chose, tel qu'un lecteur ou une visionneuse qui interprète ensuite les éléments et produit le Visual complet pour que Windows Presentation Foundation (WPF) puisse le consommer. Certaines classes UIElement sont prévues pour être des hôtes de contenu : elles assurent l'hébergement et le rendu d'une ou plusieurs classes ContentElement (DocumentViewer est un exemple d'une telle classe). ContentElement est utilisé comme classe de base pour les éléments utilisant des modèles d'objets un peu plus petits et qui gèrent plutôt le texte, les informations ou le contenu documentaire qui peuvent être hébergés 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 APIs 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 WPFAPIs 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 user interface (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 storyboards.

  • 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èle de contenu WPF.

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 réel 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 de positionnement, mais il n'expose pas les événements qui signalent les résultats positifs du test de positionnement (qui sont 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é activée par Control est la création de modèles de contrôle.

Voir aussi

Référence

Control

Concepts

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

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

Architecture de WPF