次の方法で共有


DependencyPropertyChangedEventArgs 構造体

定義

さまざまなプロパティ変更イベントにデータを提供します。 通常、これらのイベントは、読み取り専用の依存関係プロパティの有効値の変更を報告します。 もう 1 つの用途は、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に従い、一般にバッキングなしで RoutedEvent 共通言語ランタイム (CLR) イベントとして実装されます (ルーティング イベントではありません)。 プロパティの変更を通じて状態の変更を報告する、それ以外の場合は"処理" する一部のクラス処理メソッドは、 ButtonBase.OnIsPressedChangedイベント データに クラスを DependencyPropertyChangedEventArgs 使用します。

PropertyChangedCallback シナリオでは、 引数を使用して、 プロパティのプロパティ システム評価から取得された古い値と新しい値を報告します。 古い値と新しい値を処理するコールバックでは、重要でないと見なされる値の変更に応答しないことを選択するなど、これらの値に応じて特別な処理を選択する場合があります。

コンストラクター

DependencyPropertyChangedEventArgs(DependencyProperty, Object, Object)

DependencyPropertyChangedEventArgs クラスの新しいインスタンスを初期化します。

プロパティ

NewValue

変更後のプロパティの値を取得します。

OldValue

変更前のプロパティの値を取得します。

Property

値が変更された依存関係プロパティの識別子を取得します。

メソッド

Equals(DependencyPropertyChangedEventArgs)

提供された DependencyPropertyChangedEventArgs が現在の DependencyPropertyChangedEventArgs と等価であるかどうかを判断します。

Equals(Object)

提供されたオブジェクトが現在の DependencyPropertyChangedEventArgs と等価であるかどうかを判断します。

GetHashCode()

この DependencyPropertyChangedEventArgs のハッシュ コードを取得します。

演算子

Equality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

指定した 2 つの DependencyPropertyChangedEventArgs オブジェクトの値が同一かどうかを判断します。

Inequality(DependencyPropertyChangedEventArgs, DependencyPropertyChangedEventArgs)

指定した 2 つの DependencyPropertyChangedEventArgs オブジェクトが異なっているどうかを判断します。

適用対象

こちらもご覧ください