Vue d'ensemble des éléments de baseBase Elements Overview

Un pourcentage élevé de classes dans Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) est dérivé de quatre classes qui sont communément appelées dans la documentation du kit de développement logiciel (SDK) comme classes d’éléments de base.A high percentage of classes in Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) are derived from four classes which are commonly referred to in the SDK documentation as the base element classes. Ces classes sont UIElement , FrameworkElement , ContentElement et FrameworkContentElement .These classes are UIElement, FrameworkElement, ContentElement, and FrameworkContentElement. La DependencyObject classe est également associée, car il s’agit d’une classe de base commune de UIElement et ContentElementThe DependencyObject class is also related, because it is a common base class of both UIElement and ContentElement

API d’élément de base dans les classes WPFBase Element APIs in WPF Classes

UIElementEt ContentElement sont dérivés de DependencyObject , par le biais de chemins d’un peu différents.Both UIElement and ContentElement are derived from DependencyObject, through somewhat different pathways. À ce niveau, le fractionnement concerne la façon dont les UIElement ou ContentElement sont utilisés dans une interface utilisateur et leur finalité dans une application.The split at this level deals with how a UIElement or ContentElement are used in a user interface and what purpose they serve in an application. UIElement possède é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-jacent de Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) .UIElement also has Visual in its class hierarchy, which is a class that exposes the lower-level graphics support underlying the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF). Visual fournit une infrastructure de rendu en définissant des régions d’écran rectangulaires indépendantes.Visual provides a rendering framework by defining independent rectangular screen regions. Dans la pratique, est destiné aux UIElement éléments qui prendront en charge un modèle objet plus volumineux, qui sont destinés à être restitués et à une disposition dans des régions qui peuvent être décrites comme des zones d’écran rectangulaires, et où le modèle de contenu est délibérément plus ouvert, pour permettre différentes combinaisons d’éléments.In practice, UIElement is for elements that will support a larger object model, are intended to render and layout into regions that can be described as rectangular screen regions, and where the content model is deliberately more open, to allow different combinations of elements. ContentElement ne dérive pas de Visual ; son modèle est qu’un est ContentElement consommé par un autre élément, par exemple un lecteur ou une visionneuse qui interpréterait ensuite les éléments et produira l’intégralité Visual de Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) à consommer.ContentElement does not derive from Visual; its model is that a ContentElement would be consumed by something else, such as a reader or viewer that would then interpret the elements and produce the complete Visual for Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) to consume. Certaines UIElement classes sont destinées à être des hôtes de contenu : elles fournissent l’hébergement et le rendu pour une ou plusieurs ContentElement classes ( DocumentViewer est un exemple d’une telle classe).Certain UIElement classes are intended to be content hosts: they provide the hosting and rendering for one or more ContentElement classes (DocumentViewer is an example of such a class). ContentElement est utilisé comme classe de base pour les éléments avec des modèles objet un peu plus petits et qui adressent davantage le texte, les informations ou le contenu de document qui peuvent être hébergés dans un UIElement .ContentElement is used as base class for elements with somewhat smaller object models and that more address the text, information, or document content that might be hosted within a UIElement.

Niveau de framework et niveau principalFramework-Level and Core-Level

UIElement sert de classe de base pour FrameworkElement et ContentElement sert de classe de base pour FrameworkContentElement .UIElement serves as the base class for FrameworkElement, and ContentElement serves as the base class for FrameworkContentElement. La raison de ce niveau de classes suivant est de prendre en charge un niveau de noyau WPF distinct d’un niveau de Framework WPF, avec cette division également existante dans la manière dont les API sont réparties entre les assemblys PresentationCore et PresentationFramework.The reason for this next level of classes is to support a WPF core level that is separate from a WPF framework level, with this division also existing in how the APIs are divided between the PresentationCore and PresentationFramework assemblies. Le niveau de framework 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.The WPF framework level presents a more complete solution for basic application needs, including the implementation of the layout manager for presentation. Le niveau principal WPF offre un moyen d’utiliser la majeure partie de WPFWPF sans utiliser la charge mémoire de l’assembly supplémentaire.The WPF core level provides a way to use much of WPFWPF without taking the overhead of the additional assembly. La distinction entre ces niveaux est très rarement importante pour la plupart des scénarios de développement d’applications typiques, et en général, vous devez considérer les WPFWPF API dans leur ensemble et ne vous souciez pas de la différence entre le niveau de Framework WPF et le niveau de cœur WPF.The distinction between these levels very rarely matters for most typical application development scenarios, and in general you should think of the WPFWPF APIs as a whole and not concern yourself with the difference between WPF framework level and WPF core level. Vous devez pouvoir être renseigné sur les distinctions de niveau si votre conception d’applications choisit de remplacer de nombreuses fonctionnalités au niveau framework WPF, par exemple si votre solution globale possède déjà ses propres implémentations de composition d’interface utilisateur (UI)user interface (UI) et de mise en page.You might need to know about the level distinctions if your application design chooses to replace substantial quantities of WPF framework level functionality, for instance if your overall solution already has its own implementations of interface utilisateur (UI)user interface (UI) composition and layout.

Choisir de quel élément dériverChoosing Which Element to Derive From

La méthode la plus pratique pour créer une classe personnalisée qui étend WPFWPF consiste à dériver de l’une des classes WPFWPF 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.The most practical way to create a custom class that extends WPFWPF is by deriving from one of the WPFWPF classes where you get as much as possible of your desired functionality through the existing class hierarchy. 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.This section lists the functionality that comes with three of the most important element classes to help you decide which class to inherit from.

Si vous implémentez un contrôle, qui est l’une des raisons les plus courantes de la dérivation à partir d’une WPFWPF classe, vous souhaiterez probablement dériver d’une classe qui est un contrôle pratique, une classe de base de famille de contrôle, ou au moins de la Control classe de base.If you are implementing a control, which is really one of the more common reasons for deriving from a WPFWPF class, you probably want to derive from a class that is a practical control, a control family base class, or at least from the Control base class. Pour obtenir de l’aide et des exemples pratiques, consultez Vue d’ensemble de la création de contrôles.For some guidance and practical examples, see Control Authoring Overview.

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.If you are not creating a control and need to derive from a class that is higher in the hierarchy, the following sections are intended as a guide for what characteristics are defined in each base element class.

Si vous créez une classe qui dérive de DependencyObject , vous héritez des fonctionnalités suivantes :If you create a class that derives from DependencyObject, you inherit the following functionality:

  • GetValue et SetValue prise en charge, ainsi que la prise en charge générale du système de propriétés.GetValue and SetValue support, and general property system support.

  • Capacité d’utiliser les propriétés de dépendance et les propriétés jointes implémentées comme propriétés de dépendance.Ability to use dependency properties and attached properties that are implemented as dependency properties.

Si vous créez une classe qui dérive de UIElement , vous héritez des fonctionnalités suivantes en plus de celles fournies par DependencyObject :If you create a class that derives from UIElement, you inherit the following functionality in addition to that provided by DependencyObject:

  • Prise en charge de base pour les valeurs de propriété animées.Basic support for animated property values. Pour plus d’informations, consultez vue d’ensemblede l’animation.For more information, see Animation Overview.

  • Prise en charge de base des événements d’entrée et prise en charge des commandes.Basic input event support, and commanding support. Pour plus d’informations, consultez Vue d’ensemble des entrées et Vue d’ensemble des commandes.For more information, see Input Overview and Commanding Overview.

  • Méthodes virtuelles qui peuvent être substituées pour fournir des informations à un système de disposition.Virtual methods that can be overridden to provide information to a layout system.

Si vous créez une classe qui dérive de FrameworkElement , vous héritez des fonctionnalités suivantes en plus de celles fournies par UIElement :If you create a class that derives from FrameworkElement, you inherit the following functionality in addition to that provided by UIElement:

  • Prise en charge des styles et des tables de montage séquentiel.Support for styling and storyboards. Pour plus d’informations, consultez Style et vue d’ensemble des storyboards.For more information, see Style and Storyboards Overview.

  • Prise en charge de la liaison de données.Support for data binding. Pour plus d’informations, consultez vue d’ensemblede la liaison de données.For more information, see Data Binding Overview.

  • Prise en charge des références de ressource dynamique.Support for dynamic resource references. Pour plus d’informations, consultez Ressources XAML.For more information, see XAML Resources.

  • 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 de framework, comme la liaison de données, les styles ou l’implémentation du framework de disposition.Property value inheritance support, and other flags in the metadata that help report conditions about properties to framework services such as data binding, styles, or the framework implementation of layout. Pour plus d’informations, consultez Métadonnées de propriété de framework.For more information, see Framework Property Metadata.

  • Le concept de l’arborescence logique.The concept of the logical tree. Pour plus d’informations, consultez Arborescences dans WPF.For more information, see Trees in WPF.

  • Prise en charge de l’implémentation pratique du système de disposition au niveau de l’infrastructure WPF, y compris une OnPropertyChanged substitution qui peut détecter les modifications apportées aux propriétés qui influencent la disposition.Support for the practical WPF framework-level implementation of the layout system, including an OnPropertyChanged override that can detect changes to properties that influence layout.

Si vous créez une classe qui dérive de ContentElement , vous héritez des fonctionnalités suivantes en plus de celles fournies par DependencyObject :If you create a class that derives from ContentElement, you inherit the following functionality in addition to that provided by DependencyObject:

Si vous créez une classe qui dérive de FrameworkContentElement , vous obtenez les fonctionnalités suivantes en plus de celles fournies par ContentElement :If you create a class that derives from FrameworkContentElement, you get the following functionality in addition to that provided by ContentElement:

  • Prise en charge des styles et des tables de montage séquentiel.Support for styling and storyboards. Pour plus d’informations, consultez Style et vue d’ensemblede l’animation.For more information, see Style and Animation Overview.

  • Prise en charge de la liaison de données.Support for data binding. Pour plus d’informations, consultez vue d’ensemblede la liaison de données.For more information, see Data Binding Overview.

  • Prise en charge des références de ressource dynamique.Support for dynamic resource references. Pour plus d’informations, consultez Ressources XAML.For more information, see XAML Resources.

  • 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 de framework, comme la liaison de données, les styles ou l’implémentation du framework de disposition.Property value inheritance support, and other flags in the metadata that help report conditions about properties to framework services like data binding, styles, or the framework implementation of layout. Pour plus d’informations, consultez Métadonnées de propriété de framework.For more information, see Framework Property Metadata.

  • Vous n’héritez pas de l’accès aux modifications du système de disposition (par exemple, ArrangeOverride ).You do not inherit access to layout system modifications (such as ArrangeOverride). Les implémentations du système de disposition sont uniquement disponibles sur FrameworkElement .Layout system implementations are only available on FrameworkElement. Toutefois, vous héritez d’une OnPropertyChanged substitution qui peut détecter des modifications apportées aux propriétés qui influencent la disposition et les signaler à n’importe quel hôte de contenu.However, you inherit an OnPropertyChanged override that can detect changes to properties that influence layout and report these to any content hosts.

Les modèles de contenu sont documentés pour diverses classes.Content models are documented for a variety of 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.The content model for a class is one possible factor you should consider if you want to find an appropriate class to derive from. Pour plus d’informations, consultez Modèle de contenu WPF.For more information, see WPF Content Model.

Autres classes de baseOther Base Classes

DispatcherObjectDispatcherObject

DispatcherObject prend en charge le WPFWPF modèle de thread et active tous les objets créés pour les WPFWPF applications à associer à un Dispatcher .DispatcherObject provides support for the WPFWPF threading model and enables all objects created for WPFWPF applications to be associated with a Dispatcher. Même si vous ne dérivez pas de UIElement , DependencyObject ou Visual , vous devez envisager de dériver de afin DispatcherObject d’obtenir la prise en charge de ce modèle de thread.Even if you do not derive from UIElement, DependencyObject, or Visual, you should consider deriving from DispatcherObject in order to get this threading model support. Pour plus d’informations, consultez Modèle de thread.For more information, see Threading Model.

Élément visuelVisual

Visual implémente le concept d’un objet 2D qui requiert généralement une présentation visuelle dans une région à peu près rectangulaire.Visual implements the concept of a 2D object that generally requires visual presentation in a roughly rectangular region. Le rendu réel d’un Visual se produit dans d’autres classes (il n’est pas autonome), mais la Visual classe fournit un type connu qui est utilisé par le rendu des processus à différents niveaux.The actual rendering of a Visual happens in other classes (it is not self-contained), but the Visual class provides a known type that is used by rendering processes at various levels. Visual implémente le test de positionnement, mais il n’expose pas les événements qui signalent des tests de positionnement positifs (ils sont dans UIElement ).Visual implements hit testing, but it does not expose events that report hit-testing positives (these are in UIElement). Pour plus d’informations, consultez Programmation de la couche visuelle.For more information, see Visual Layer Programming.

FreezableFreezable

Freezable simule l’immuabilité dans un objet mutable en fournissant le moyen de générer des copies de l’objet lorsqu’un objet immuable est requis ou souhaité pour des raisons de performances.Freezable simulates immutability in a mutable object by providing the means to generate copies of the object when an immutable object is required or desired for performance reasons. Le Freezable type fournit une base commune pour certains éléments graphiques tels que les géométries et les pinceaux, ainsi que les animations.The Freezable type provides a common basis for certain graphics elements such as geometries and brushes, as well as animations. En particulier, un Freezable n’est pas un Visual ; il peut contenir des propriétés qui deviennent des sous-propriétés lorsque Freezable est appliqué pour remplir une valeur de propriété d’un autre objet, et ces sous-propriétés peuvent affecter le rendu.Notably, a Freezable is not a Visual; it can hold properties that become subproperties when the Freezable is applied to fill a property value of another object, and those subproperties might affect rendering. Pour plus d’informations, consultez Vue d’ensemble des objets Freezable.For more information, see Freezable Objects Overview.

Animatable

Animatable est une Freezable classe dérivée qui ajoute spécifiquement la couche de contrôle d’animation et certains membres de l’utilitaire afin que les propriétés animées puissent être distinguées des propriétés non animées.Animatable is a Freezable derived class that specifically adds the animation control layer and some utility members so that currently animated properties can be distinguished from nonanimated properties.

ControlControl

Control est la classe de base prévue pour le type d’objet qui est à plusieurs termes un contrôle ou un composant, en fonction de la technologie.Control is the intended base class for the type of object that is variously termed a control or component, depending on the technology. En général, les classes de contrôle WPFWPF sont des classes qui représentent directement un contrôle d’interface utilisateur ou qui participent étroitement à la composition de contrôle.In general, WPFWPF control classes are classes that either directly represent a UI control or participate closely in control composition. La principale fonctionnalité qui Control active est la création de modèles de contrôle.The primary functionality that Control enables is control templating.

Voir aussiSee also