DependencyObject.RegisterPropertyChangedCallback Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Регистрирует функцию уведомления для прослушивания изменений определенного DependencyProperty в этом экземпляре 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
Параметры
Идентификатор свойства зависимостей свойства, регистрируемого для уведомления об изменении свойства.
- callback
- DependencyPropertyChangedCallback
Обратный вызов на основе делегата DependencyPropertyChangedCallback , который система вызывает при изменении значения указанного свойства.
Возвращаемое значение
Маркер, представляющий обратный вызов, используемый для идентификации обратного вызова в вызовах UnregisterPropertyChangedCallback.
Примеры
В этом примере показано, как использовать делегат DependencyPropertyChangedCallback для прослушивания изменений свойства Tag в 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));
}
}
Комментарии
Используйте RegisterPropertyChangedCallback, чтобы получать уведомления об изменении свойства для свойств зависимостей, которые уже определены как часть платформы XAML. Это полезно для свойств, где еще не является соответствующим событием платформы XAML, которое отслеживает изменения. Например, FrameworkElement.Tag — это существующее свойство зависимостей платформы XAML, и приложение может отслеживать изменение значения этого свойства, поскольку некоторые внешние входные данные (например, привязка данных) изменили значение среды выполнения этого свойства в определенном экземпляре объекта, который является частью пользовательского интерфейса приложения.
Чтобы отменить регистрацию обратного вызова, вызовите UnregisterPropertyChangedCallback и передайте маркер, возвращенный этим методом.
Как правило, registerPropertyChangedCallback не используется для уведомлений о настраиваемом свойстве зависимостей, так как пользовательские свойства зависимостей уже имеют способ зарегистрировать обработчик, изменивший свойство, который предоставляет дополнительные данные в аргументах событий. Дополнительную информацию см. в разделе Пользовательские свойства зависимостей.