Compartir a través de


DependencyPropertyChangedEventArgs Clase

Definición

Proporciona datos para una implementación propertyChangedCallback que se invoca cuando una propiedad de dependencia cambia su valor. También proporciona datos de eventos para el evento Control.IsEnabledChanged y cualquier otro evento que use el delegado 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
Herencia
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v1.0)

Ejemplos

En este ejemplo se muestra una implementación propertyChangedCallback que usa los datos del evento DependencyPropertyChangedEventArgs. En concreto, usa NewValue para establecer una propiedad relacionada, que muestra el valor de DependencyProperty numérico subyacente como texto, en una parte TextBlock de un control compuesto.

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

Comentarios

DependencyPropertyChangedEventArgs proporciona datos para dos situaciones diferentes que implican cambios en los valores de propiedad de dependencia:

Una implementación propertyChangedCallback es una parte opcional de los metadatos de propiedad que se proporcionan al registrar una propiedad de dependencia. El sistema de propiedades de dependencia invoca internamente la devolución de llamada. Para obtener más información sobre las propiedades de dependencia en general, consulte Propiedades de dependencia personalizadas y Información general sobre las propiedades de dependencia.

Normalmente, se define el método con acceso privado o interno. El método debe ser estático. Dado que el método es estático, es importante el parámetro DependencyObject (d) del delegado PropertyChangedCallback . Eso es lo que identifica la instancia de objeto de dependencia específica en la que cambia la propiedad. Para muchas operaciones, como corregir o coercar un valor, o cambiar otro valor de propiedad calculado en respuesta en el mismo objeto, hará referencia a este DependencyObject. Normalmente, querrá convertirlo al tipo de propietario de la propiedad que cambia. El tipo de propietario es el tipo al que se hace referencia por nombre en la llamada DependencyProperty.Register ; los metadatos en los que se asigna propertyChangedCallback a los metadatos de propiedad forman parte de esa misma llamada.

Tenga en cuenta la posibilidad de recursividad. Si cambia el valor de una propiedad de dependencia para la que se invoca PropertyChangedCallback , se volverá a invocar. Por ejemplo, si creaste una devolución de llamada para una propiedad Double donde la devolución de llamada siempre dividió el valor en 2, esa devolución de llamada se llamaría de forma recursiva y la aplicación estaría en un bucle infinito.

Es legal tener dos o más propiedades de dependencia diferentes que definan devoluciones de llamada para cambiarse entre sí, pero tenga cuidado de no crear una dependencia circular involuntaria que no permita estabilizar los valores.

Un PropertyChangedCallback solo se invoca si OldValue y NewValue en los datos del evento son diferentes.

OldValue y NewValue no tienen tipo, por lo que cualquier comparación que realice probablemente necesite una conversión. Muchos valores de propiedad de dependencia usan un tipo de valor, lo que significa que confiará en los operadores u otra API del tipo de valor para realizar las comparaciones. Esa funcionalidad suele estar disponible en la estructura que representa un valor, como una API de utilidad. Por ejemplo, la API de utilidad específica del lenguaje en un valor de Grosor permite comparar los valores de Grosor .

Nota

Si va a programar con C++, algunas de las estructuras de Windows Runtime no admiten miembros que no son de datos, por lo que no admite operadores u otra utilidad. Para ello, hay una clase auxiliar complementaria que proporciona la API de comparación que puede usar el código de C++. Por ejemplo, use la clase ColorHelper para comparar los valores de Color .

Uso de DependencyPropertyChangedEventArgs para un evento personalizado

Un implementador de control personalizado podría considerar el uso de DependencyPropertyChangedEventHandler como tipo de delegado si se desencadena un evento personalizado como resultado de un cambio de valor de propiedad de dependencia. Solo puede activar este evento desde el contexto de un PropertyChangedCallback. Esto se debe a que el valor que cambió (la propiedad, el valor anterior y el nuevo) debe estar en dependencyPropertyChangedEventArgs que se notifican para el evento en el nivel del sistema de propiedades. Pero no hay constructores para DependencyPropertyChangedEventArgs y ninguna de sus propiedades se pueden establecer, por lo que la única manera de obtener un valor DependencyPropertyChangedEventArgs es obtenerlo de los parámetros PropertyChangedCallback originales y pasarlo al desencadenar el evento personalizado.

Propiedades

NewValue

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

OldValue

Obtiene el valor de la propiedad de dependencia antes del cambio notificado.

Property

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

Se aplica a

Consulte también