Compartilhar via


DependencyPropertyChangedCallback Delegar

Definição

Representa o retorno de chamada invocado quando um valor de propriedade é alterado para notificações de alteração de propriedade registradas com a 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

A instância do objeto que contém a propriedade a ser registrada para notificação alterada pela propriedade.

dp
DependencyProperty

O identificador de propriedade de dependência da propriedade a ser registrada para notificação alterada pela propriedade.

Atributos

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v1.0)

Exemplos

Este exemplo mostra como usar um delegado DependencyPropertyChangedCallback para escutar alterações na propriedade Tag em um 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));
    }
}

Comentários

Os valores de parâmetro do delegado são baseados no parâmetro fornecido à invocação RegisterPropertyChangedCallback que registrou uma propriedade específica para notificação alterada pela propriedade e na instância que a invocou.

Como o retorno de chamada tem o parâmetro dp que identifica qual valor de propriedade foi alterado, você pode usar o mesmo retorno de chamada para lidar com vários casos alterados de propriedade e sua lógica pode gravar casos para cada propriedade diferente.

Por motivos de desempenho, você não obtém um par de propriedades OldValue / NewValue de um método PropertyChangedCallback como faz com DependencyPropertyChangedEventArgs. O valor da propriedade é alterado antes do retorno de chamada, portanto, depois que o método for invocado, você poderá chamar DependencyObject.GetValue para recuperar o novo valor.

Aplica-se a

Confira também