DependencyPropertyChangedCallback Delegado
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
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.