Partage via


DependencyProperty Classe

Définition

Représente une propriété de dépendance inscrite auprès du système de propriétés de dépendance. Les propriétés de dépendance prennent en charge les expressions de valeur, la liaison de données, l’animation et la notification de modification de propriété. Pour plus d’informations sur la façon dont les valeurs DependencyProperty servent d’identificateurs pour les propriétés de dépendance, consultez Vue d’ensemble des propriétés de dépendance.

public ref class DependencyProperty sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyProperty final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyProperty
Public NotInheritable Class DependencyProperty
See Remarks
Héritage
Object Platform::Object IInspectable DependencyProperty
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

Cet exemple montre une utilisation de base où un DependencyProperty est établi en tant que membre statique public d’une classe. Pour ce faire, appelez Register et stockez la valeur de retour en tant que membre de la classe . Pour obtenir d’autres exemples, consultez Propriétés de dépendance personnalisées.

public class Fish : Control
{
    public static readonly DependencyProperty SpeciesProperty =
    DependencyProperty.Register(
    "Species",
    typeof(String),
    typeof(Fish), null
    );
    public string Species
    {
        get { return (string)GetValue(SpeciesProperty); }
        set { SetValue(SpeciesProperty, (string)value); }
    }
}
Public Class Fish
    Inherits Control

    Public Shared ReadOnly SpeciesProperty As DependencyProperty = _
    DependencyProperty.Register(
    "Species", _
    GetType(String), _
    GetType(Fish), _
    Nothing)
    Public Property Species As String
        Get
            Species = CType(GetValue(SpeciesProperty), String)
        End Get
        Set(value As String)
            SetValue(SpeciesProperty, value)
        End Set
    End Property
End Class

Un exemple d’extensions de composant Visual C++ (C++/CX) n’est pas affiché ici, car il doit être factorisé complètement différemment des exemples Microsoft .NET et implique plusieurs fichiers de code différents. Consultez des exemples dans Propriétés de dépendance personnalisées.

Remarques

Les concepts des propriétés de dépendance sont abordés en détail dans la rubrique Vue d’ensemble des propriétés de dépendance.

Les instances de DependencyProperty sont souvent référencées dans la documentation en tant qu’identificateurs de propriété de dépendance. Les identificateurs permettent de faire référence à une propriété de dépendance qui a été inscrite auprès d’un type de propriétaire DependencyObject particulier. Lorsque le type de propriétaire inscrit la propriété, le type propriétaire expose l’instance DependencyProperty en tant qu’identificateur, qui est un membre statique de la classe owner.

DependencyObject propriétaire fournit le magasin de propriétés pour la propriété de dépendance. Lorsque vous utilisez une propriété de dépendance dans du code, vous pouvez utiliser des identificateurs DependencyProperty comme entrée pour les appels à des méthodes système de propriété telles que SetValue. Toutefois, dans la plupart des cas, l’obtention ou la définition d’une propriété de dépendance est plus simple en obtenant ou en définissant le wrapper ; Ce concept est expliqué dans Vue d’ensemble des propriétés de dépendance.

DependencyProperty prend en charge une conversion native pour la syntaxe d’attribut XAML pour le remplissage des valeurs, qui est utilisée lorsqu’un setter spécifie sa valeur Property . Cette conversion utilise un formulaire ownerTypeName**.**propertyName pour la chaîne d’entrée.

Notes

Une syntaxe associée qui peut également être utilisée pour spécifier une propriété par nom et qui est requise par certaines API de données et d’animation est la syntaxe de chemin de propriété. Un chemin de propriété peut être utilisé pour référencer la structure d’une classe qui a des propriétés et la valeur de cette propriété. Pour plus d’informations, voir Syntaxe de PropertyPath.

Conseil

Si vous programmez à l’aide d’un langage Microsoft .NET (C# ou Microsoft Visual Basic), le type TypeName est projeté comme System.Type. Lors de la programmation à l’aide de C#, il est courant d’utiliser l’opérateur typeof pour obtenir des références au System.Type d’un type. Dans Microsoft Visual Basic, utilisez GetType. Si vous utilisez des extensions de composant Visual C++ (C++/CX)), où vous devez créer un struct d’assistance TypeName , vous pouvez utiliser l’extension de composant typeid.

Le Windows Runtime implémente la fonctionnalité de langage de propriété jointe XAML avec des identificateurs DependencyProperty et un stockage de propriétés sur un DependencyObject. Pour plus d’informations, voir Vue d’ensemble des propriétés jointes.

Propriétés de dépendance personnalisées

Si vous souhaitez que les propriétés de vos types personnalisés prennent en charge les expressions de valeur, la liaison de données ou l’animation, vous devez sauvegarder les propriétés avec une propriété de dépendance en suivant ces instructions :

  • Inscrivez une propriété de dépendance à l’aide de la méthode Register , qui retourne une propriété DependencyProperty. Il s’agit de votre identificateur de propriété de dépendance. Vous devez exposer cet objet en tant que propriété statique accessible en lecture seule dans votre classe. Par convention, le nom de ce champ d’identificateur DependencyProperty doit se terminer par « Propriété ».
  • Lors de l’inscription, vous pouvez fournir PropertyMetadata pour la propriété afin de définir davantage les comportements de la propriété.
  • Fournissez des accesseurs get et set pour la propriété : il s’agit des wrappers de propriété, ce qui simplifie l’accès à votre propriété pour tous les appelants.

Références XAML à un nom de propriété de dépendance

Certaines propriétés généralement définies dans le balisage XAML utilisent DependencyProperty comme valeur. Par exemple, vous définissez Setter.Property en XAML. Pour définir une telle propriété en XAML, vous spécifiez le nom de la propriété de dépendance comme valeur d’attribut.

Pour Setter.Property , le type à partir duquel vous faites référence à un nom de propriété de dépendance est déjà délimité par le TargetType du style où le Setter existe. Pour une propriété de dépendance sur l’objet TargetType , vous pouvez spécifier une valeur Setter.Property à l’aide du nom simple de la propriété de dépendance. Par exemple, si vous avez un style qui cible un curseur et que vous souhaitez appliquer un style à la propriété Orientation , la valeur de l’attribut Property peut être simplement « Orientation ». Les noms simples fonctionnent également tant que la propriété de dépendance provient d’une classe dans l’héritage plus profond du type cible. Par exemple, pour appliquer un style à la propriété Visibility dans le style d’un curseur, une valeur d’attribut Property de « Visibility » fonctionne. Dans ce cas , la visibilité a été définie par UIElement, mais hérite de Slider.

Vous pouvez également utiliser Setter.Property pour référencer un nom de propriété joint. Pour la valeur de l’attribut, utilisez la forme AttachedPropertyOwner.AttachedPropertyName, comme vous l’utiliseriez pour définir cette propriété jointe en tant qu’attribut en XAML. Par exemple, voici un setter qui définit la propriété jointe AutomationProperties.ItemType dans un style : <Setter Property="AutomationProperties.ItemType" Value="Navigation Button"/>

Notes

Le nom d’une propriété de dépendance n’est pas le nom de l’identificateur de propriété statique DependencyProperty. Il s’agit de la chaîne de nom avec laquelle la propriété est inscrite et du nom qui est le nom d’utilisation standard de cette propriété dans Windows Runtime programmation lorsqu’elle est exposée par Microsoft IntelliSense et la documentation de référence. En d’autres termes, vous ne souhaitez pas que la chaîne que vous spécifiez pour Setter.Property en XAML se termine par « Property » (sauf dans quelques rares cas où la propriété de dépendance contient en fait le suffixe « Property »).

Utilisation d’un DependencyProperty (identificateur de propriété de dépendance) dans le code

Plusieurs méthodes sont des méthodes utilitaires pour le système de propriétés Windows Runtime qui utilisent une valeur DependencyProperty comme paramètre d’entrée. Il s’agit notamment des paramètres suivants :

Propriétés

UnsetValue

Spécifie une valeur statique qui est utilisée par le système de propriétés plutôt que null pour indiquer que la propriété existe, mais dont la valeur n’est pas définie par le système de propriétés ou par un code d’application.

Méthodes

GetMetadata(TypeName)

Récupère la valeur de métadonnées de propriété pour la propriété de dépendance telle qu’inscrite auprès d’un type. Vous spécifiez le type à partir duquel vous souhaitez obtenir des informations comme référence de type.

Register(String, TypeName, TypeName, PropertyMetadata)

Inscrit une propriété de dépendance avec le nom de propriété, le type de propriété, le type de propriétaire et les métadonnées de propriété spécifiés pour la propriété. Utilisez cette méthode lors de la définition ou de l’initialisation d’une classe dérivée DependencyObject qui possédera la propriété de dépendance inscrite.

RegisterAttached(String, TypeName, TypeName, PropertyMetadata)

Inscrit une propriété de dépendance jointe avec le nom de propriété, le type de propriété, le type de propriétaire et les métadonnées de propriété spécifiés pour la propriété.

S’applique à

Voir aussi