Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez définir des options de métadonnées de propriété d’infrastructure pour les propriétés de dépendance au niveau de l’infrastructure WPF (Windows Presentation Foundation). La désignation au niveau de l’infrastructure WPF s’applique lorsque les API de présentation WPF et les exécutables gèrent le rendu et la liaison de données. Les API de présentation et les exécutables interrogent la FrameworkPropertyMetadata propriété de dépendance.
Conditions préalables
L’article suppose une connaissance de base des propriétés de dépendance et que vous avez lu vue d’ensemble des propriétés de dépendance. Pour suivre les exemples de cet article, il vous aide à connaître le langage XAML (Extensible Application Markup Language) et à savoir comment écrire des applications WPF.
Catégories de métadonnées de propriété du cadre
FrameworkPropertyMetadata entre dans ces catégories :
Métadonnées qui affectent la disposition d’un élément, en particulier les indicateurs de métadonnées AffectsArrange, AffectsMeasure, et AffectsRender. Vous pouvez définir ces indicateurs si l’implémentation de votre propriété de dépendance affecte un aspect visuel et que vous implémentez MeasureOverride ou ArrangeOverride dans votre classe. Les méthodes
MeasureOverrideetArrangeOverridefournissent des comportements spécifiques à l'implémentation et des informations de rendu au système de disposition. QuandAffectsArrange,AffectsMeasureouAffectsRendersont définistruedans les métadonnées d’une propriété de dépendance et sa valeur effective change, le système de propriétés WPF lance une demande d’invalidation des visuels de l’élément pour déclencher un redessinage.Métadonnées qui affectent la disposition de l’élément parent d’un élément, en particulier les indicateurs de métadonnées AffectsParentArrange et AffectsParentMeasure. Exemples de propriétés de dépendance WPF qui définissent ces indicateurs sont FixedPage.Left et Paragraph.KeepWithNext.
Métadonnées d’héritage de valeur de propriété, en particulier les indicateurs de métadonnées Inherits et OverridesInheritanceBehavior. Par défaut, les propriétés de dépendance n’héritent pas des valeurs. OverridesInheritanceBehavior permet au chemin d’héritage de traverser également une arborescence visuelle, ce qui est nécessaire pour certains scénarios de composition de contrôle. Pour plus d’informations, consultez Héritage de valeur de propriété.
Remarque
Le terme « hérite » dans le contexte des valeurs de propriété est spécifique aux propriétés de dépendance et n’est pas directement lié aux types de code managé et à l’héritage des membres par le biais de types dérivés. Dans le contexte des propriétés de dépendance, cela signifie que les éléments enfants peuvent hériter des valeurs de propriété de dépendance des éléments parents.
Métadonnées de liaison de données, en particulier les BindsTwoWayByDefault et IsNotDataBindable drapeaux de métadonnées. Par défaut, les propriétés de dépendance dans l’infrastructure WPF prennent en charge la liaison unidirectionnelle. Envisagez de définir la liaison bidirectionnelle comme valeur par défaut pour les propriétés dont l’état du rapport est modifiable par l’action de l’utilisateur, par exemple IsSelected. Envisagez également de définir la liaison bidirectionnelle comme valeur par défaut lorsque les utilisateurs d’un contrôle attendent qu’une propriété l’implémente, par exemple TextBox.Text.
BindsTwoWayByDefaultaffecte uniquement le mode de liaison par défaut. Pour modifier la direction du flux de données d’une liaison, définissez Binding.Mode. Vous pouvez utiliserIsNotDataBindablepour désactiver la liaison de données en l’absence de cas d’usage. Pour plus d’informations sur les liaisons de données, consultez vue d’ensemble de la liaison de données.Journalisation des métadonnées, en particulier l’indicateur de Journal métadonnées. La valeur par défaut de l’indicateur
Journalest uniquementtruepour certaines propriétés de dépendance, telles que SelectedIndex. Les contrôles d’entrée utilisateur doivent définir l’indicateurJournaldes propriétés dont les valeurs contiennent des sélections utilisateur qui doivent être stockées. L’indicateurJournalest lu par les applications ou les services qui prennent en charge la journalisation, y compris les services de journalisation WPF. Pour plus d’informations sur le stockage des étapes de navigation, consultez Vue d’ensemble de la navigation
FrameworkPropertyMetadata dérive directement de UIPropertyMetadata, et implémente les indicateurs abordés ici. Sauf si spécifiquement défini, FrameworkPropertyMetadata les indicateurs ont une valeur par défaut .false
Lecture de FrameworkPropertyMetadata
Pour récupérer les métadonnées d’une propriété de dépendance, appelez GetMetadata sur l’identificateur DependencyProperty. L’appel GetMetadata retourne un PropertyMetadata objet. Si vous devez interroger les valeurs des métadonnées de l’infrastructure, convertissez-les de PropertyMetadata à FrameworkPropertyMetadata.
Spécification de FrameworkPropertyMetadata
Lorsque vous inscrivez une propriété de dépendance, vous avez la possibilité de créer et d’affecter des métadonnées. L’objet de métadonnées que vous affectez peut être PropertyMetadata ou l’une de ses classes dérivées, comme FrameworkPropertyMetadata. Choisissez FrameworkPropertyMetadata les propriétés de dépendance qui s’appuient sur les API de présentation WPF et les exécutables pour le rendu et la liaison de données. Une option plus avancée consiste à dériver de FrameworkPropertyMetadata pour créer une classe de rapports sur les métadonnées personnalisée avec davantage de marques. Vous pouvez également utiliser UIPropertyMetadata pour les propriétés non-framework qui affectent le rendu de l’interface utilisateur.
Bien que les options de métadonnées soient généralement définies lors de l’inscription d’une nouvelle propriété de dépendance, vous pouvez les redéfinir dans les appels OverrideMetadata ou AddOwner. Lors du remplacement des métadonnées, remplacez toujours par le même type de métadonnées que celui utilisé lors de l'inscription de la propriété.
Les caractéristiques de propriété exposées par FrameworkPropertyMetadata sont parfois appelées indicateurs. Si vous créez une FrameworkPropertyMetadata instance, il existe deux façons de remplir les valeurs d’indicateur :
Définissez les indicateurs sur une instance du type d’énumération FrameworkPropertyMetadataOptions .
FrameworkPropertyMetadataOptionsvous permet de spécifier des indicateurs de métadonnées dans une combinaison OR au niveau du bit. Ensuite, instanciezFrameworkPropertyMetadataà l’aide d’un constructeur qui a unFrameworkPropertyMetadataOptionsparamètre et transmettez votreFrameworkPropertyMetadataOptionsinstance. Pour modifier les indicateurs de métadonnées après avoir passéFrameworkPropertyMetadataOptionsdans le FrameworkPropertyMetadata constructeur, modifiez la propriété correspondante sur la nouvelleFrameworkPropertyMetadatainstance. Par exemple, si vous définissez l’indicateur FrameworkPropertyMetadataOptions.NotDataBindable , vous pouvez annuler cela en définissant FrameworkPropertyMetadata.IsNotDataBindable surfalse.Instanciez
FrameworkPropertyMetadataen utilisant un constructeur qui n’a pas de paramètreFrameworkPropertyMetadataOptions, puis définissez les indicateurs applicables Boolean surFrameworkPropertyMetadata. Définissez les valeurs d’indicateur avant d’associer votreFrameworkPropertyMetadatainstance à une propriété de dépendance, sinon vous obtiendrez un InvalidOperationException.
Comportement de remplacement des métadonnées
Lorsque vous remplacez les métadonnées de propriété de l’infrastructure, les valeurs de métadonnées modifiées remplacent ou sont fusionnées avec les valeurs d’origine :
Pour un PropertyChangedCallback, la logique de fusion par défaut conserve les valeurs précédentes
PropertyChangedCallbackd’une table et toutes sont appelées sur une modification de propriété. L’ordre de rappel est déterminé par profondeur de classe, où un rappel inscrit par la classe de base de la hiérarchie s’exécuterait en premier. Les rappels hérités s’exécutent une seule fois et appartiennent à la classe qui les a ajoutées aux métadonnées.Pour un DefaultValue, la nouvelle valeur remplace la valeur par défaut existante. Si vous ne spécifiez pas
DefaultValuedans les métadonnées de remplacement et si l’indicateur FrameworkPropertyMetadata duInheritsexistant est défini, la valeur par défaut provient de l’ancêtre le plus proche ayant spécifiéDefaultValuedans les métadonnées.Pour un CoerceValueCallback, la nouvelle valeur remplace une valeur existante
CoerceValueCallback. Si vous ne spécifiez pas deCoerceValueCallbackdans les métadonnées de substitution, la valeur provient de l’ancêtre le plus proche dans la chaîne d’héritage qui a spécifié unCoerceValueCallback.Pour
FrameworkPropertyMetadatales indicateurs non hérités, vous pouvez remplacer la valeur par défautfalsepar unetruevaleur. Toutefois, vous pouvez uniquement remplacer unetruevaleur par unefalsevaleur pour Inherits, Journal, OverridesInheritanceBehavioret SubPropertiesDoNotAffectRender.
Remarque
La logique de fusion par défaut est implémentée par la Merge méthode. Vous pouvez spécifier une logique de fusion personnalisée dans une classe dérivée qui hérite d'une propriété de dépendance, en redéfinissant Merge dans cette classe.
Voir aussi
- PropertyMetadata
- GetMetadata
- OverrideMetadata
- AddOwner
- Métadonnées de propriété de dépendance
- Vue d’ensemble des propriétés de dépendance
- Propriétés de dépendance personnalisées
.NET Desktop feedback