DependencyPropertyChangedEventArgs 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.
Fournit des données pour une implémentation PropertyChangedCallback appelée lorsqu’une propriété de dépendance modifie sa valeur. Fournit également des données d’événement pour l’événement Control.IsEnabledChanged et tout autre événement qui utilise le délégué DependencyPropertyChangedEventHandler .
public ref class DependencyPropertyChangedEventArgs 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 DependencyPropertyChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs 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 DependencyPropertyChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
- Héritage
- 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 implémentation PropertyChangedCallback qui utilise les données d’événement DependencyPropertyChangedEventArgs. En particulier, il utilise NewValue pour définir une propriété associée, qui affiche la valeur de DependencyProperty numérique sous-jacente sous forme de texte, dans une partie TextBlock d’un contrôle composite.
private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
NumericUpDown ctl = (NumericUpDown)obj;
Int32 newValue = (Int32)args.NewValue;
// Update the TextElement to the new value.
if (ctl.TextElement != null)
{
ctl.TextElement.Text = newValue.ToString();
}
Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
ByVal args As DependencyPropertyChangedEventArgs)
Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
Dim newValue As Integer = args.NewValue
' Update the TextElement to the new value.
If ctl.TextElement IsNot Nothing Then
ctl.TextElement.Text = newValue.ToString()
End If
Remarques
DependencyPropertyChangedEventArgs fournit des données pour deux situations différentes qui impliquent des modifications des valeurs des propriétés de dépendance :
- Informations de rappel situationnelles utilisées par un PropertyChangedCallback pour une propriété de dépendance personnalisée. C’est le cas le plus courant.
- Données d’événement pour un événement basé sur DependencyPropertyChangedEventHandler. Cela est moins courant, car le seul événement Windows Runtime qui utilise ce délégué est l’événement Control.IsEnabledChanged. Pour plus d’informations sur l’utilisation des données d’événement DependencyPropertyChangedEventArgs dans ce cas, consultez DependencyPropertyChangedEventHandler ou Control.IsEnabledChanged.
Une implémentation PropertyChangedCallback est une partie facultative des métadonnées de propriété que vous fournissez lors de l’inscription d’une propriété de dépendance. Le rappel est appelé par le système de propriétés de dépendance en interne. Pour plus d’informations sur les propriétés de dépendance en général, consultez Propriétés de dépendance personnalisées et Vue d’ensemble des propriétés de dépendance.
En règle générale, vous définissez la méthode avec un accès privé ou interne. La méthode doit être statique. Étant donné que la méthode est statique, le paramètre DependencyObject (d) du délégué PropertyChangedCallback est important. C’est ce qui identifie l’objet de dépendance spécifique instance où la propriété change. Pour de nombreuses opérations, telles que la correction ou la force d’une valeur, ou la modification d’une autre valeur de propriété calculée en réponse sur le même objet, vous allez référencer cet objet DependencyObject. Vous souhaiterez généralement le caster en type de propriétaire de la propriété qui change. Le type de propriétaire est le type référencé par nom dans l’appel DependencyProperty.Register ; les métadonnées dans lesquelles votre PropriétéChangedCallback est affecté aux métadonnées de propriété font partie de ce même appel.
Soyez conscient de la possibilité de récursivité. Si vous modifiez la valeur d’une propriété de dépendance pour laquelle propertyChangedCallback est appelé, elle est appelée à nouveau. Par exemple, si vous avez créé un rappel pour une propriété Double où le rappel a toujours divisé la valeur par 2, ce rappel serait appelé de manière récursive et votre application serait dans une boucle infinie.
Il est légal d’avoir deux propriétés de dépendance différentes ou plus qui définissent des rappels pour les changer mutuellement, mais attention encore une fois à ne pas créer une dépendance circulaire involontaire qui ne permet pas aux valeurs de se stabiliser.
Un PropertyChangedCallback est appelé uniquement si OldValue et NewValue dans les données d’événement sont différents.
OldValue et NewValue ne sont pas typés. Par conséquent, toute comparaison que vous effectuez nécessite probablement un cast. De nombreuses valeurs de propriété de dépendance utilisent un type valeur, ce qui signifie que vous vous fierez aux opérateurs ou à une autre API du type valeur pour effectuer les comparaisons. Cette fonctionnalité est généralement disponible sur la structure qui représente une valeur, en tant qu’API utilitaire. Par exemple, l’API d’utilitaire spécifique au langage sur une valeur d’épaisseur vous permet de comparer les valeurs d’épaisseur .
Notes
Si vous programmez à l’aide de C++, quelques-unes des structures Windows Runtime ne prennent pas en charge les membres non de données. Par conséquent, ne prenez pas en charge les opérateurs ou autres utilitaires. Pour ceux-ci, il existe une classe d’assistance complémentaire qui fournit une API de comparaison que le code C++ peut utiliser. Par exemple, utilisez la classe ColorHelper pour comparer les valeurs Color .
Utilisation de DependencyPropertyChangedEventArgs pour un événement personnalisé
Un implémenteur de contrôle personnalisé peut envisager d’utiliser DependencyPropertyChangedEventHandler comme type de délégué si un événement personnalisé est déclenché à la suite d’un changement de valeur de propriété de dépendance. Vous pouvez uniquement déclencher un tel événement à partir du contexte d’un PropertyChangedCallback. Cela est dû au fait que la valeur qui a changé (la propriété, l’ancienne et la nouvelle valeur) doit se trouver dans les DependencyPropertyChangedEventArgs qui sont signalés pour l’événement au niveau du système de propriété. Mais il n’existe aucun constructeur pour DependencyPropertyChangedEventArgs et aucune de ses propriétés n’est paramétrable. Par conséquent, la seule façon d’obtenir une valeur DependencyPropertyChangedEventArgs consiste à l’obtenir à partir des paramètres PropertyChangedCallback d’origine et à la transmettre lorsque vous déclenchez votre événement personnalisé.
Propriétés
NewValue |
Obtient la valeur de la propriété de dépendance après la modification signalée. |
OldValue |
Obtient la valeur de la propriété de dépendance avant la modification signalée. |
Property |
Obtient l'identificateur pour la propriété de dépendance où la valeur a été modifiée. |