Partager via


DependencyPropertyChangedEventArgs Structure

Définition

Fournit des données pour différents événements de modification de propriété. En général, ces événements font état des modifications effectives de valeurs dans la valeur d’une propriété de dépendance en lecture seule. Il est aussi possible de l’utiliser dans le cadre d’une implémentation de PropertyChangedCallback.

public value class DependencyPropertyChangedEventArgs
public struct DependencyPropertyChangedEventArgs
type DependencyPropertyChangedEventArgs = struct
Public Structure DependencyPropertyChangedEventArgs
Héritage
DependencyPropertyChangedEventArgs

Exemples

L’exemple suivant utilise la DependencyPropertyChangedEventArgs classe dans le contexte d’une PropertyChangedCallback propriété particulière d’une classe personnalisée qui définit également les événements. Le rappel prend les résultats des anciennes et nouvelles valeurs du système de propriétés comme communiqué par DependencyPropertyChangedEventArgs, et les repackage dans une autre classe RoutedPropertyChangedEventArgs<T>d’arguments d’événements . Les nouveaux arguments sont ensuite utilisés comme données pour un événement « ValueChanged » défini par la classe personnalisée et déclenché par la classe personnalisée.

public static readonly DependencyProperty ValueProperty =
    DependencyProperty.Register(
        "Value", typeof(decimal), typeof(NumericUpDown),
        new FrameworkPropertyMetadata(MinValue, new PropertyChangedCallback(OnValueChanged),
                                      new CoerceValueCallback(CoerceValue)));

private static object CoerceValue(DependencyObject element, object value)
{
    decimal newValue = (decimal)value;

    newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue));

    return newValue;
}

private static void OnValueChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown control = (NumericUpDown)obj;

    RoutedPropertyChangedEventArgs<decimal> e = new RoutedPropertyChangedEventArgs<decimal>(
        (decimal)args.OldValue, (decimal)args.NewValue, ValueChangedEvent);
    control.OnValueChanged(e);
}
/// <summary>
/// Identifies the ValueChanged routed event.
/// </summary>
public static readonly RoutedEvent ValueChangedEvent = EventManager.RegisterRoutedEvent(
    "ValueChanged", RoutingStrategy.Bubble,
    typeof(RoutedPropertyChangedEventHandler<decimal>), typeof(NumericUpDown));

/// <summary>
/// Occurs when the Value property changes.
/// </summary>
public event RoutedPropertyChangedEventHandler<decimal> ValueChanged
{
    add { AddHandler(ValueChangedEvent, value); }
    remove { RemoveHandler(ValueChangedEvent, value); }
}
/// <summary>
/// Raises the ValueChanged event.
/// </summary>
/// <param name="args">Arguments associated with the ValueChanged event.</param>
protected virtual void OnValueChanged(RoutedPropertyChangedEventArgs<decimal> args)
{
    RaiseEvent(args);
}
Public Shared ReadOnly ValueProperty As DependencyProperty = DependencyProperty.Register("Value", GetType(Decimal), GetType(NumericUpDown), New FrameworkPropertyMetadata(MinValue, New PropertyChangedCallback(AddressOf OnValueChanged), New CoerceValueCallback(AddressOf CoerceValue)))

Private Shared Overloads Function CoerceValue(ByVal element As DependencyObject, ByVal value As Object) As Object
    Dim newValue As Decimal = CDec(value)

    newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue))

    Return newValue
End Function

Private Shared Sub OnValueChanged(ByVal obj As DependencyObject, ByVal args As DependencyPropertyChangedEventArgs)
    Dim control As NumericUpDown = CType(obj, NumericUpDown)

    Dim e As New RoutedPropertyChangedEventArgs(Of Decimal)(CDec(args.OldValue), CDec(args.NewValue), ValueChangedEvent)
    control.OnValueChanged(e)
End Sub
''' <summary>
''' Identifies the ValueChanged routed event.
''' </summary>
Public Shared ReadOnly ValueChangedEvent As RoutedEvent = EventManager.RegisterRoutedEvent("ValueChanged", RoutingStrategy.Bubble, GetType(RoutedPropertyChangedEventHandler(Of Decimal)), GetType(NumericUpDown))

''' <summary>
''' Occurs when the Value property changes.
''' </summary>
Public Custom Event ValueChanged As RoutedPropertyChangedEventHandler(Of Decimal)
    AddHandler(ByVal value As RoutedPropertyChangedEventHandler(Of Decimal))
        MyBase.AddHandler(ValueChangedEvent, value)
    End AddHandler
    RemoveHandler(ByVal value As RoutedPropertyChangedEventHandler(Of Decimal))
        MyBase.RemoveHandler(ValueChangedEvent, value)
    End RemoveHandler
    RaiseEvent(ByVal sender As System.Object, ByVal e As RoutedPropertyChangedEventArgs(Of Decimal))
    End RaiseEvent
End Event
''' <summary>
''' Raises the ValueChanged event.
''' </summary>
''' <param name="args">Arguments associated with the ValueChanged event.</param>
Protected Overridable Sub OnValueChanged(ByVal args As RoutedPropertyChangedEventArgs(Of Decimal))
    MyBase.RaiseEvent(args)
End Sub

Remarques

Les événements qui utilisent la DependencyPropertyChangedEventArgs classe pour les données d’événements et les DependencyPropertyChangedEventHandler implémentations de méthode pour les gestionnaires, suivent généralement le modèle Is*Changedde nommage et sont généralement implémentés en tant qu’événements CLR (Common Language Runtime) sans RoutedEvent stockage (ils ne sont pas routés). Certaines méthodes de gestion des classes qui « gèrent » sinon des événements non exposés qui signalent une modification d’état par le biais d’une modification de propriété, par exemple ButtonBase.OnIsPressedChanged, utilisent également la DependencyPropertyChangedEventArgs classe pour les données d’événement.

Le scénario pour PropertyChangedCallback lequel utiliser les arguments pour signaler les anciennes et nouvelles valeurs provenant de l’évaluation du système de propriétés de la propriété. Un rappel qui traite les anciennes et nouvelles valeurs peut choisir une gestion spéciale en fonction de ces valeurs, telles que le choix de ne pas répondre aux modifications de valeur considérées comme insignifiantes.

Constructeurs

DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object)

Initialise une nouvelle instance de la classe DependencyPropertyChangedEventArgs.

Propriétés

NewValue

Obtient ou définit la propriété après modification.

OldValue

Obtient la valeur de la propriété avant modification.

Property

Obtient l'identificateur pour la propriété de dépendance où la valeur a été modifiée.

Méthodes

Equals(DependencyPropertyChangedEventArgs)

Détermine si le DependencyPropertyChangedEventArgs spécifié est équivalent au DependencyPropertyChangedEventArgs actuel.

Equals(Object)

Détermine si l'objet fourni est équivalent au DependencyPropertyChangedEventArgs actuel.

GetHashCode()

Obtient un code de hachage pour ce DependencyPropertyChangedEventArgs.

Opérateurs

Equality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Détermine si deux objets DependencyPropertyChangedEventArgs spécifiés ont la même valeur.

Inequality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Détermine si deux objets DependencyPropertyChangedEventArgs spécifiés sont différents.

S’applique à

Voir aussi