DependencyPropertyChangedEventArgs Класс

Определение

Предоставляет данные для реализации PropertyChangedCallback , которая вызывается при изменении значения свойства зависимостей. Также предоставляет данные события для события Control.IsEnabledChanged и любого другого события, использующего делегат DependencyPropertyChangedEventHandler .

public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
Наследование
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
Атрибуты

Примеры

В этом примере показана реализация PropertyChangedCallback , использующая DependencyPropertyChangedEventArgs данные события. В частности, он использует NewValue для задания связанного свойства, которое отображает базовое числовое значение DependencyProperty в виде текста в элементе TextBlock составного элемента управления.

private static void ValueChangedCallback(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown ctl = (NumericUpDown)obj;
    Int32 newValue = (Int32)args.NewValue;

    // Update the TextElement to the new value.
    if (ctl.TextElement != null)
    {
        ctl.TextElement.Text = newValue.ToString();
    }

Комментарии

DependencyPropertyChangedEventArgs предоставляет данные для двух разных ситуаций, связанных с изменением значений свойств зависимостей:

  • Сведения о ситуационных вызовах, используемые PropertyChangedCallback для настраиваемого свойства зависимостей. Это наиболее распространенный случай.
  • Данные события для события на основе DependencyPropertyChangedEventHandler. Это менее распространено, так как единственным событием среда выполнения Windows, использующим этот делегат, является событие Control.IsEnabledChanged. Дополнительные сведения об использовании DependencyPropertyChangedEventArgs данных события в этом случае см. в разделе DependencyPropertyChangedEventHandler или Control.IsEnabledChanged.

Реализация PropertyChangedCallback является необязательной частью метаданных свойства, которые вы предоставляете при регистрации свойства зависимостей. Обратный вызов вызывается системой свойств зависимостей внутри системы. Дополнительные сведения о свойствах зависимостей в целом см. в разделах Пользовательские свойства зависимостей и Общие сведения о свойствах зависимостей.

Обычно метод определяется с частным или внутренним доступом. Метод должен быть статическим. Так как метод является статическим, параметр DependencyObject (d) делегата PropertyChangedCallback имеет важное значение. Это то, что идентифицирует конкретный экземпляр объекта зависимостей, в котором изменяется свойство. Для многих операций, таких как исправление или принудиние значения или изменение другого вычисляемого значения свойства в ответ на тот же объект, вы будете ссылать на это DependencyObject. Обычно требуется привести его к типу владельца изменяющегося свойства. Тип владельца — это тип, на который ссылается имя в вызове DependencyProperty.Register ; метаданные, которым PropertyChangedCallback назначены метаданные свойства, являются частью того же вызова.

Помните о возможности рекурсии. Если изменить значение свойства зависимостей, для который вызывается PropertyChangedCallback , оно будет вызываться снова. Например, если вы создали обратный вызов для Double свойства, в котором обратный вызов всегда делил значение на 2, этот обратный вызов будет вызываться рекурсивно, а ваше приложение будет находиться в бесконечном цикле.

Допустимо иметь два или более разных свойства зависимостей, определяющих обратные вызовы, чтобы изменить друг друга, но опять же будьте осторожны, чтобы не создать непреднамеренно циклическую зависимость, которая не позволяет стабилизировать значения.

PropertyChangedCallback вызывается только в том случае, если OldValue и NewValue в данных события отличаются.

OldValue и NewValue бывают нетипизированными, поэтому для любого сравнения, вероятно, потребуется приведение. Многие значения свойств зависимостей используют тип значения, что означает, что для сравнения вы будете полагаться на операторы или другой API типа значения. Эта функция обычно доступна в структуре, представляющей значение, в виде API служебной программы. Например, api служебной программы для конкретного языка для значения Thickness позволяет сравнивать Thickness значения.

Примечание

При программировании на C++ некоторые структуры среда выполнения Windows не поддерживают элементы, не являющиеся данными, поэтому не поддерживают операторы или другую служебную программу. Для них существует класс-компаньон Helper , предоставляющий API сравнения, который может использовать код C++. Например, используйте класс ColorHelper для сравнения значений Color .

Использование DependencyPropertyChangedEventArgs для пользовательского события

Реализующий пользовательский элемент управления может использовать DependencyPropertyChangedEventHandler в качестве типа делегата, если пользовательское событие создается в результате изменения значения свойства зависимостей. Такое событие можно запускать только из контекста PropertyChangedCallback. Это связано с тем, что измененное значение (свойство, старое и новое) должно находиться в объекте DependencyPropertyChangedEventArgs , который сообщается для события на уровне системы свойств. Но конструкторов для DependencyPropertyChangedEventArgs не существует, и ни одно из его свойств не настраивается, поэтому единственный способ получить DependencyPropertyChangedEventArgs значение — получить его из исходных PropertyChangedCallback параметров и передать его при запуске пользовательского события.

Свойства

NewValue

Возвращает значение свойства зависимостей после указанного изменения.

OldValue

Возвращает значение свойства зависимостей перед сообщаемого изменения.

Property

Возвращает идентификатор свойства зависимостей, в котором произошло изменение значения.

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

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