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

Параметры

dp
DependencyProperty

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

callback
DependencyPropertyChangedCallback

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

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

Int64

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

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

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