Compartir a través de


DependencyPropertyChangedEventArgs Estructura

Definición

Proporciona datos de los distintos eventos de cambio de propiedades. Normalmente, estos eventos notifican cambios de valor efectivos en el valor de una propiedad de dependencia de solo lectura. Otro uso es como parte de una implementación de PropertyChangedCallback.

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

Ejemplos

En el ejemplo siguiente se usa la DependencyPropertyChangedEventArgs clase en el contexto de para PropertyChangedCallback una propiedad determinada de una clase personalizada que también define eventos. La devolución de llamada toma los resultados de los valores antiguos y nuevos del sistema de propiedades tal y como se comunica mediante DependencyPropertyChangedEventArgsy los vuelve a empaquetar en una clase RoutedPropertyChangedEventArgs<T>de argumentos de eventos diferente . A continuación, los nuevos argumentos se usan como datos para un evento "ValueChanged" definido por y generado por la clase personalizada.

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

Comentarios

Los eventos que usan la clase para los DependencyPropertyChangedEventArgs datos de eventos y las DependencyPropertyChangedEventHandler implementaciones de método para los controladores, generalmente siguen el patrón Is*Changedde nomenclatura y, por lo general, se implementan como eventos de Common Language Runtime (CLR) sin RoutedEvent respaldo (no son eventos enrutados). Algunos métodos de control de clases que "controlan" de lo contrario eventos no expuestos que notifican un cambio de estado a través de un cambio de propiedad, como ButtonBase.OnIsPressedChanged, también usan la clase para los DependencyPropertyChangedEventArgs datos de eventos.

El escenario de PropertyChangedCallback es usar los argumentos para notificar valores antiguos y nuevos que proceden de la evaluación del sistema de propiedades de la propiedad. Una devolución de llamada que procesa valores antiguos y nuevos puede elegir un control especial en función de estos valores, como elegir no responder a los cambios de valor que se consideran insignificantes.

Constructores

DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object)

Inicializa una nueva instancia de la clase DependencyPropertyChangedEventArgs.

Propiedades

NewValue

Obtiene el valor de la propiedad después del cambio.

OldValue

Obtiene el valor de la propiedad antes del cambio.

Property

Obtiene el identificador para la propiedad de dependencia en la que se produjo el cambio de valor.

Métodos

Equals(DependencyPropertyChangedEventArgs)

Determina si el DependencyPropertyChangedEventArgs proporcionado es equivalente al DependencyPropertyChangedEventArgs actual.

Equals(Object)

Determina si el objeto proporcionado es equivalente al DependencyPropertyChangedEventArgs actual.

GetHashCode()

Obtiene un código hash de este objeto DependencyPropertyChangedEventArgs.

Operadores

Equality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Determina si dos objetos DependencyPropertyChangedEventArgs especificados tienen el mismo valor.

Inequality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Determina si dos objetos DependencyPropertyChangedEventArgs especificados son diferentes.

Se aplica a

Consulte también