DependencyObject.RegisterPropertyChangedCallback Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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
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.