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
для уведомлений о пользовательском свойстве зависимостей, так как пользовательские свойства зависимостей уже имеют способ регистрации обработчика изменения свойства, который предоставляет больше данных в аргументах событий. Дополнительную информацию см. в разделе Пользовательские свойства зависимостей.