Condividi tramite


DependencyObject.RegisterPropertyChangedCallback Metodo

Definizione

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

public:
 virtual long long RegisterPropertyChangedCallback(DependencyProperty ^ dp, DependencyPropertyChangedCallback ^ callback) = RegisterPropertyChangedCallback;
long RegisterPropertyChangedCallback(DependencyProperty const& dp, DependencyPropertyChangedCallback const& callback);
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 della proprietà.

callback
DependencyPropertyChangedCallback

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

Restituisce

Int64

long long

long

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

Esempio

In questo esempio viene illustrato come utilizzare un delegato DependencyPropertyChangedCallback per restare in ascolto delle 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 è 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 di tale 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