Язык

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

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

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