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

Параметры

dp
DependencyProperty

Идентификатор свойства зависимости, регистрируемого для уведомления об изменении свойства.

callback
DependencyPropertyChangedCallback

Обратный вызов на основе делегата DependencyPropertyChangedCallback , который система вызывает при изменении значения указанного свойства.

Возвращаемое значение

Int64

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

Применяется к

См. также раздел