DependencyObject.RegisterPropertyChangedCallback Metodo

Definizione

Registra una funzione di notifica per l'ascolto delle modifiche a una dipendenza specifica in questa istanza dependencyObject .

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

Parametri

dp
DependencyProperty

Identificatore della proprietà di dipendenza della proprietà da registrare per la notifica di modifica delle proprietà.

callback
DependencyPropertyChangedCallback

Callback basato sul delegato DependencyPropertyChangedCallback , che il sistema richiama quando cambia il valore della proprietà specificata.

Valori restituiti

Int64

long long

Token che rappresenta il callback, utilizzato per identificare il callback nelle chiamate a UnregisterPropertyChangedCallback.

Esempio

In questo esempio viene illustrato come usare un delegato DependencyPropertyChangedCallback per ascoltare le modifiche apportate alla proprietà Tag in un controllo 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));
    }
}

Commenti

Usa RegisterPropertyChangedCallback per ottenere una notifica di modifica delle proprietà per le proprietà di dipendenza già definite come parte del framework XAML. Ciò è utile per le proprietà in cui non esiste già un evento del framework XAML corrispondente che tiene traccia delle modifiche. Ad esempio, FrameworkElement.Tag è una proprietà di dipendenza del framework XAML esistente e l'app può tenere traccia quando il valore della proprietà cambia perché alcuni input esterni (ad esempio un data binding) hanno modificato il valore di runtime della proprietà in una particolare istanza dell'oggetto che fa parte dell'interfaccia utente dell'app.

Per annullare la registrazione del callback, chiamare UnregisterPropertyChangedCallback e passare il token restituito da questo metodo.

In genere non si usa RegisterPropertyChangedCallback per le notifiche su una proprietà di dipendenza personalizzata, perché le proprietà di dipendenza personalizzate hanno già un modo per registrare un gestore di proprietà modificato che fornisce più dati negli argomenti dell'evento. Per altre info, vedi Proprietà di dipendenza personalizzate.

Si applica a

Vedi anche