DependencyProperty Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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(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
- Attributs
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); }
}
}
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 le DependencyProperty
instance 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 le code, vous pouvez utiliser des DependencyProperty
identificateurs 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 à 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 DependencyProperty
des identificateurs 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 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 ceDependencyProperty
champ d’identificateur 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
get
des accesseurs etset
pour la propriété : il s’agit des wrappers de propriété et simplifieront 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 qui sont 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 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 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 DependencyProperty
valeur comme paramètre d’entrée. Il s’agit notamment des paramètres suivants :
- DependencyObject.ClearValue
- DependencyObject.GetAnimationBaseValue
- DependencyObject.GetValue
- DependencyObject.ReadLocalValue
- DependencyObject.SetValue
- DependencyPropertyChangedEventArgs.Property
- Constructeur Setter(DependencyProperty,Object)
Propriétés
UnsetValue |
Spécifie une valeur statique qui est utilisée par le système de propriétés plutôt que |
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é. |