Partager via


DependencyPropertyChangedEventArgs Classe

Définition

Fournit des données pour une implémentation PropertyChangedCallback appelée lorsqu’une propriété de dépendance change 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(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 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

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 sous-jacente DependencyProperty 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();
    }

Remarques

DependencyPropertyChangedEventArgs fournit des données pour deux situations différentes qui impliquent des modifications des valeurs de propriété 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 DependencyPropertyChangedEventArgs données d’événement 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 lorsque vous inscrivez 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 ce DependencyObject. Vous souhaiterez généralement le convertir 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 où votre PropertyChangedCallback 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 Double propriété 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 ou plusieurs propriétés de dépendance différentes qui définissent des rappels pour se modifier mutuellement, mais là encore, veillez à 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 à d’autres 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 utilitaire spécifique au langage sur une valeur d’épaisseur vous permet de comparer des Thickness valeurs.

Notes

Si vous programmez à l’aide de C++, quelques-unes des structures Windows Runtime ne prennent pas en charge les membres non-données. Par conséquent, ne prennent pas en charge les opérateurs ou autres utilitaires. Pour ceux-ci, il existe une classe complémentaire Helper 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’une modification 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 être dans le DependencyPropertyChangedEventArgs qui sont signalés pour l’événement au niveau du système de propriété. Mais il n’y a pas de constructeur pour DependencyPropertyChangedEventArgs et aucune de ses propriétés n’est paramétrable. La seule façon d’obtenir une DependencyPropertyChangedEventArgs valeur est donc de l’obtenir à partir des paramètres d’origine PropertyChangedCallback et de 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