Partage via


DependencyPropertyChangedEventArgs Classe

Définition

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
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
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 :

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.

S’applique à

Voir aussi