DependencyPropertyChangedEventArgs Struct-datatyp

Definition

Innehåller data för olika egenskapsändringshändelser. Vanligtvis rapporterar dessa händelser effektiva värdeändringar i värdet för en skrivskyddad beroendeegenskap. En annan användning är en del av en PropertyChangedCallback implementering.

public value class DependencyPropertyChangedEventArgs
public struct DependencyPropertyChangedEventArgs
type DependencyPropertyChangedEventArgs = struct
Public Structure DependencyPropertyChangedEventArgs
Arv
DependencyPropertyChangedEventArgs

Exempel

I följande exempel används DependencyPropertyChangedEventArgs klassen i kontexten för en PropertyChangedCallback för en viss egenskap för en anpassad klass som också definierar händelser. Återanropet tar resultatet av gamla och nya värden från egenskapssystemet enligt vad som kommuniceras av DependencyPropertyChangedEventArgs, och paketerar om dessa till en annan händelseargumentklass RoutedPropertyChangedEventArgs<T>. De nya argumenten används sedan som data för en "ValueChanged"-händelse som definieras av och genereras av den anpassade klassen.

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

Kommentarer

De händelser som använder DependencyPropertyChangedEventArgs klassen för händelsedata och DependencyPropertyChangedEventHandler metodimplementeringarna för hanterare följer vanligtvis namngivningsmönstret Is*Changedoch implementeras vanligtvis som CLR-händelser (Common Language Runtime) utan RoutedEvent stöd (de är inte routade händelser). Vissa klasshanteringsmetoder som "hanterar" annars oexponerade händelser som rapporterar en tillståndsändring genom en egenskapsändring, till exempel ButtonBase.OnIsPressedChanged, använder DependencyPropertyChangedEventArgs även klassen för händelsedata.

Scenariot för PropertyChangedCallback är att använda argumenten för att rapportera gamla och nya värden som kommer från egenskapssystemets utvärdering av egenskapen. Ett återanrop som bearbetar gamla och nya värden kan välja särskild hantering beroende på dessa värden, till exempel att välja att inte svara på värdeändringar som anses vara obetydliga.

Konstruktorer

Name Description
DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object)

Initierar en ny instans av DependencyPropertyChangedEventArgs klassen.

Egenskaper

Name Description
NewValue

Hämtar värdet för egenskapen efter ändringen.

OldValue

Hämtar värdet för egenskapen före ändringen.

Property

Hämtar identifieraren för beroendeegenskapen där värdeändringen inträffade.

Metoder

Name Description
Equals(DependencyPropertyChangedEventArgs)

Avgör om den angivna DependencyPropertyChangedEventArgs är likvärdig med den aktuella DependencyPropertyChangedEventArgs.

Equals(Object)

Avgör om det angivna objektet motsvarar det aktuella DependencyPropertyChangedEventArgs.

GetHashCode()

Hämtar en hash-kod för den här DependencyPropertyChangedEventArgs.

Operatorer

Name Description
Equality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Avgör om två angivna DependencyPropertyChangedEventArgs objekt har samma värde.

Inequality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Avgör om två angivna DependencyPropertyChangedEventArgs objekt är olika.

Gäller för

Se även