DependencyObject.RegisterPropertyChangedCallback Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Регистрирует функцию уведомлений для прослушивания изменений в определенном экземпляре DependencyProperty в этом экземпляре 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
Параметры
Идентификатор свойства зависимостей для регистрации для уведомления об изменении свойства.
- callback
- DependencyPropertyChangedCallback
Обратный вызов на основе делегата DependencyPropertyChangedCallback , который система вызывает при изменении значения указанного свойства.
Возвращаемое значение
long long
Маркер, представляющий обратный вызов, используемый для идентификации обратного вызова в вызовах 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 уведомления для настраиваемого свойства зависимостей, так как пользовательские свойства зависимостей уже имеют способ регистрации обработчика изменения свойства, предоставляющего дополнительные данные в событиях. Дополнительные сведения см. в разделе "Настраиваемые свойства зависимостей".