DependencyPropertyChangedCallback Delegado

Definición

Representa la devolución de llamada que se invoca cuando cambia un valor de propiedad, para las notificaciones de cambio de propiedad registradas con la técnica RegisterPropertyChangedCallback .

public delegate void DependencyPropertyChangedCallback(DependencyObject ^ sender, DependencyProperty ^ dp);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1166556438, 10175, 19393, 172, 38, 148, 193, 96, 31, 58, 73)]
class DependencyPropertyChangedCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(1166556438, 10175, 19393, 172, 38, 148, 193, 96, 31, 58, 73)]
public delegate void DependencyPropertyChangedCallback(DependencyObject sender, DependencyProperty dp);
Public Delegate Sub DependencyPropertyChangedCallback(sender As DependencyObject, dp As DependencyProperty)

Parámetros

sender
DependencyObject

Instancia de objeto que contiene la propiedad que se va a registrar para la notificación de cambio de propiedad.

dp
DependencyProperty

Identificador de propiedad de dependencia de la propiedad que se va a registrar para la notificación de cambio de propiedad.

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 cómo usar un delegado DependencyPropertyChangedCallback para escuchar los cambios en la propiedad Tag de un TextBlock.

<TextBlock x:Name="textBlock1" Text="Hello, world"/>
long tagToken;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    long tagToken = textBlock1.RegisterPropertyChangedCallback(TextBlock.TagProperty, tbTagChangedCallback);
    base.OnNavigatedTo(e);

    textBlock1.Tag = "name";
}

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    textBlock1.UnregisterPropertyChangedCallback(TextBlock.TagProperty, tagToken);
    base.OnNavigatedFrom(e);
}

private void tbTagChangedCallback(DependencyObject sender, DependencyProperty dp)
{
    if (dp == TextBlock.TagProperty)
    {
       // These lines produce the same result.
       System.Diagnostics.Debug.WriteLine("The tag has been set to " + ((TextBlock)sender).Tag);
       System.Diagnostics.Debug.WriteLine("The tag has been set to " + sender.GetValue(dp));
    }
}

Comentarios

Los valores de parámetro del delegado se basan en el parámetro proporcionado a la invocación RegisterPropertyChangedCallback que registró una propiedad determinada para la notificación de cambio de propiedad y la instancia que la invocó.

Dado que la devolución de llamada tiene el parámetro dp que identifica qué valor de propiedad ha cambiado, puede usar la misma devolución de llamada para controlar varios casos modificados por propiedades y la lógica puede escribir casos para cada propiedad diferente.

Por motivos de rendimiento, no se obtiene un par de propiedades OldValue / NewValue de un método PropertyChangedCallback como lo hace desde DependencyPropertyChangedEventArgs. El valor de la propiedad se cambia antes de la devolución de llamada, por lo que una vez que se ha invocado el método, puede llamar a DependencyObject.GetValue para recuperar el nuevo valor.

Se aplica a

Consulte también