DependencyObject.RegisterPropertyChangedCallback Método

Definición

Registra una función de notificación para escuchar los cambios en una dependencyProperty específica en esta instancia de DependencyObject .

public:
 virtual long long RegisterPropertyChangedCallback(DependencyProperty ^ dp, DependencyPropertyChangedCallback ^ callback) = RegisterPropertyChangedCallback;
long RegisterPropertyChangedCallback(DependencyProperty const& dp, DependencyPropertyChangedCallback const& callback);
public long RegisterPropertyChangedCallback(DependencyProperty dp, DependencyPropertyChangedCallback callback);
function registerPropertyChangedCallback(dp, callback)
Public Function RegisterPropertyChangedCallback (dp As DependencyProperty, callback As DependencyPropertyChangedCallback) As Long

Parámetros

dp
DependencyProperty

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

callback
DependencyPropertyChangedCallback

Devolución de llamada basada en el delegado DependencyPropertyChangedCallback , que el sistema invoca cuando cambia el valor de la propiedad especificada.

Devoluciones

Int64

long long

long

Token que representa la devolución de llamada, que se usa para identificar la devolución de llamada en llamadas a UnregisterPropertyChangedCallback.

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)
{
    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

Usa RegisterPropertyChangedCallback para obtener la notificación de cambio de propiedad para las propiedades de dependencia que ya están definidas como parte del marco XAML. Esto es útil para las propiedades en las que aún no se trata de un evento de marco XAML correspondiente que realiza un seguimiento de los cambios. Por ejemplo, FrameworkElement.Tag es una propiedad de dependencia del marco XAML existente y la aplicación podría realizar un seguimiento cuando cambia el valor de esa propiedad porque alguna entrada externa (como un enlace de datos) ha cambiado el valor de tiempo de ejecución de esa propiedad en una instancia de objeto determinada que forma parte de la interfaz de usuario de la aplicación.

Para anular el registro de la devolución de llamada, llame a UnregisterPropertyChangedCallback y pase el token devuelto por este método.

Normalmente no se usa RegisterPropertyChangedCallback para las notificaciones en una propiedad de dependencia personalizada, ya que las propiedades de dependencia personalizadas ya tienen una manera de registrar un controlador modificado por propiedades que proporciona más datos en los argumentos de eventos. Para obtener más información, consulta Propiedades de dependencia personalizadas.

Se aplica a

Consulte también