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 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(Microsoft.UI.Xaml.WinUIContract, 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(Microsoft.UI.Xaml.WinUIContract), 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
Héritage
Object Platform::Object IInspectable DependencyProperty
Attributs

Exemples

Cet exemple montre une utilisation de base où un DependencyProperty membre statique public d’une classe est établi. Pour ce faire, appelez Register et stockez la valeur de retour en tant que membre de la classe. Pour plus d’exemples, consultez les 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); }
    }
}

Remarques

Les concepts de propriété 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 ces instances sont souvent référencées dans la documentation en tant qu’identificateurs de propriété de dépendance. Les identificateurs fournissent un moyen de faire référence à une propriété de dépendance inscrite dans un type de propriétaire DependencyObject particulier. Lorsque le type de propriétaire inscrit la propriété, le type de propriétaire expose l’instance DependencyProperty en tant qu’identificateur, qui est un membre statique de la classe propriétaire.

DependencyObject propriétaire fournit le magasin de propriétés de la propriété de dépendance. Lorsque vous utilisez une propriété de dépendance dans le code, vous pouvez utiliser des DependencyProperty identificateurs comme entrée pour les appels à des méthodes de système de propriétés 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 la 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 ownerTypeName.formulaire propertyName pour la chaîne d’entrée.

Note

Une syntaxe associée qui peut également être utilisée pour spécifier une propriété par nom et est requise par certaines données et API d’animation est la syntaxe du 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, consultez la syntaxe property-path.

Tip

Si vous programmez à l’aide d’un langage Microsoft .NET (C#), les projets de type TypeName en tant que 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.

Si vous utilisez C++/WinRT , vous pouvez utiliser la winrt::xaml_typename<T>() fonction d’assistance pour créer un TypeName objet. Pour plus d’informations, consultez le modèle de fonction winrt ::xaml_typename et un exemple de code.

Le Windows Runtime implémente la fonctionnalité de langage de propriété jointe XAML avec DependencyProperty des identificateurs et un stockage de propriétés sur un DependencyObject. Pour plus d’informations, consultez la 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 un 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 DependencyProperty champ d’identificateur doit se terminer par « Property ».
  • Pendant l’inscription, vous pouvez fournir PropertyMetadata pour que la propriété définisse davantage les comportements de la propriété.
  • Fournissez get et set accesseurs pour la propriété : il s’agit des wrappers de propriétés et simplifient 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 sont utilisées 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 référencez un nom de propriété de dépendance est déjà délimité par le TargetType du style où existe Setter . 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 styler la propriété Orientation , la valeur de l’attribut Propriété 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 styler la propriété Visibility dans le style d’un curseur, une valeur d’attribut Propriété 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é attaché. Pour la valeur d’attribut, utilisez le formulaire 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"/>

Note

Le nom d’une propriété de dépendance n’est pas le nom de l’identificateur DependencyProperty de propriété statique. 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 classique 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 » (à l’exception de quelques cas rares où la propriété de dépendance contient réellement le suffixe « Property »).

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

Il existe plusieurs méthodes utilitaires pour le système de propriétés Windows Runtime qui utilisent une DependencyProperty valeur comme paramètre d’entrée. Cela comprend :

Propriétés

Nom Description
UnsetValue

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

Méthodes

Nom Description
GetMetadata(TypeName)

Récupère la valeur des métadonnées de propriété pour la propriété de dépendance inscrite dans un type. Vous spécifiez le type à partir duquel vous souhaitez obtenir des informations sous la forme d’une 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ède 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é pour la propriété.

S’applique à

Voir aussi