DependencyPropertyChangedCallback Delegar
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.
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.