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(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(4032150305, 8603, 23308, 128, 93, 188, 174, 218, 225, 84, 88)]
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

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