DependencyPropertyChangedEventArgs Структура

Определение

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

public value class DependencyPropertyChangedEventArgs
public struct DependencyPropertyChangedEventArgs
type DependencyPropertyChangedEventArgs = struct
Public Structure DependencyPropertyChangedEventArgs
Наследование
DependencyPropertyChangedEventArgs

Примеры

В следующем примере используется DependencyPropertyChangedEventArgs класс в контексте PropertyChangedCallback определенного свойства пользовательского класса, который также определяет события. Обратный вызов принимает результаты старых и новых значений из системы свойств, как сообщается DependencyPropertyChangedEventArgs, и перепаковывает их в другой класс RoutedPropertyChangedEventArgs<T>аргументов событий. Затем новые аргументы используются в качестве данных для события ValueChanged, определенного и вызываемого пользовательским классом.

public static readonly DependencyProperty ValueProperty =
    DependencyProperty.Register(
        "Value", typeof(decimal), typeof(NumericUpDown),
        new FrameworkPropertyMetadata(MinValue, new PropertyChangedCallback(OnValueChanged),
                                      new CoerceValueCallback(CoerceValue)));

private static object CoerceValue(DependencyObject element, object value)
{
    decimal newValue = (decimal)value;

    newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue));

    return newValue;
}

private static void OnValueChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
{
    NumericUpDown control = (NumericUpDown)obj;

    RoutedPropertyChangedEventArgs<decimal> e = new RoutedPropertyChangedEventArgs<decimal>(
        (decimal)args.OldValue, (decimal)args.NewValue, ValueChangedEvent);
    control.OnValueChanged(e);
}
/// <summary>
/// Identifies the ValueChanged routed event.
/// </summary>
public static readonly RoutedEvent ValueChangedEvent = EventManager.RegisterRoutedEvent(
    "ValueChanged", RoutingStrategy.Bubble,
    typeof(RoutedPropertyChangedEventHandler<decimal>), typeof(NumericUpDown));

/// <summary>
/// Occurs when the Value property changes.
/// </summary>
public event RoutedPropertyChangedEventHandler<decimal> ValueChanged
{
    add { AddHandler(ValueChangedEvent, value); }
    remove { RemoveHandler(ValueChangedEvent, value); }
}
/// <summary>
/// Raises the ValueChanged event.
/// </summary>
/// <param name="args">Arguments associated with the ValueChanged event.</param>
protected virtual void OnValueChanged(RoutedPropertyChangedEventArgs<decimal> args)
{
    RaiseEvent(args);
}
Public Shared ReadOnly ValueProperty As DependencyProperty = DependencyProperty.Register("Value", GetType(Decimal), GetType(NumericUpDown), New FrameworkPropertyMetadata(MinValue, New PropertyChangedCallback(AddressOf OnValueChanged), New CoerceValueCallback(AddressOf CoerceValue)))

Private Shared Overloads Function CoerceValue(ByVal element As DependencyObject, ByVal value As Object) As Object
    Dim newValue As Decimal = CDec(value)

    newValue = Math.Max(MinValue, Math.Min(MaxValue, newValue))

    Return newValue
End Function

Private Shared Sub OnValueChanged(ByVal obj As DependencyObject, ByVal args As DependencyPropertyChangedEventArgs)
    Dim control As NumericUpDown = CType(obj, NumericUpDown)

    Dim e As New RoutedPropertyChangedEventArgs(Of Decimal)(CDec(args.OldValue), CDec(args.NewValue), ValueChangedEvent)
    control.OnValueChanged(e)
End Sub
''' <summary>
''' Identifies the ValueChanged routed event.
''' </summary>
Public Shared ReadOnly ValueChangedEvent As RoutedEvent = EventManager.RegisterRoutedEvent("ValueChanged", RoutingStrategy.Bubble, GetType(RoutedPropertyChangedEventHandler(Of Decimal)), GetType(NumericUpDown))

''' <summary>
''' Occurs when the Value property changes.
''' </summary>
Public Custom Event ValueChanged As RoutedPropertyChangedEventHandler(Of Decimal)
    AddHandler(ByVal value As RoutedPropertyChangedEventHandler(Of Decimal))
        MyBase.AddHandler(ValueChangedEvent, value)
    End AddHandler
    RemoveHandler(ByVal value As RoutedPropertyChangedEventHandler(Of Decimal))
        MyBase.RemoveHandler(ValueChangedEvent, value)
    End RemoveHandler
    RaiseEvent(ByVal sender As System.Object, ByVal e As RoutedPropertyChangedEventArgs(Of Decimal))
    End RaiseEvent
End Event
''' <summary>
''' Raises the ValueChanged event.
''' </summary>
''' <param name="args">Arguments associated with the ValueChanged event.</param>
Protected Overridable Sub OnValueChanged(ByVal args As RoutedPropertyChangedEventArgs(Of Decimal))
    MyBase.RaiseEvent(args)
End Sub

Комментарии

События, использующие DependencyPropertyChangedEventArgs класс для данных событий, и DependencyPropertyChangedEventHandler реализации методов для обработчиков, обычно следуют шаблону Is*Changedименования и обычно реализуются как события среды CLR без RoutedEvent резервной копии (они не маршрутизуются). Некоторые методы обработки классов, которые "обрабатывают" в противном случае необработаемые события, сообщающие об изменении состояния путем изменения свойства, например ButtonBase.OnIsPressedChanged, используют DependencyPropertyChangedEventArgs класс для данных событий.

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

Конструкторы

Имя Описание
DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object)

Инициализирует новый экземпляр класса DependencyPropertyChangedEventArgs.

Свойства

Имя Описание
NewValue

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

OldValue

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

Property

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

Методы

Имя Описание
Equals(DependencyPropertyChangedEventArgs)

Определяет, эквивалентен ли предоставленный DependencyPropertyChangedEventArgs объект текущему DependencyPropertyChangedEventArgs.

Equals(Object)

Определяет, эквивалентен ли предоставленный объект текущему DependencyPropertyChangedEventArgsобъекту.

GetHashCode()

Получает хэш-код для этого DependencyPropertyChangedEventArgs.

Операторы

Имя Описание
Equality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Определяет, имеют ли два указанных DependencyPropertyChangedEventArgs объекта одинаковые значения.

Inequality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

Определяет, отличаются ли два указанных DependencyPropertyChangedEventArgs объекта.

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

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