다음을 통해 공유


DependencyPropertyChangedEventArgs 클래스

정의

종속성 속성이 값을 변경할 때 호출되는 PropertyChangedCallback 구현에 대한 데이터를 제공합니다. 또한 Control.IsEnabledChanged 이벤트 및 DependencyPropertyChangedEventHandler 대리자를 사용하는 다른 이벤트에 대한 이벤트 데이터를 제공합니다.

public ref class DependencyPropertyChangedEventArgs sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DependencyPropertyChangedEventArgs final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DependencyPropertyChangedEventArgs final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DependencyPropertyChangedEventArgs
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DependencyPropertyChangedEventArgs
Public NotInheritable Class DependencyPropertyChangedEventArgs
상속
Object Platform::Object IInspectable DependencyPropertyChangedEventArgs
특성

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

예제

이 예제에서는 DependencyPropertyChangedEventArgs 이벤트 데이터를 사용하는 PropertyChangedCallback 구현을 보여줍니다. 특히 NewValue를 사용하여 복합 컨트롤의 TextBlock 부분에 기본 숫자 DependencyProperty 값을 텍스트로 표시하는 관련 속성을 설정합니다.

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();
    }

Private Shared Sub ValueChangedCallback(ByVal obj As DependencyObject, _
                    ByVal args As DependencyPropertyChangedEventArgs)

    Dim ctl As NumericUpDown = DirectCast(obj, NumericUpDown)
    Dim newValue As Integer = args.NewValue

    ' Update the TextElement to the new value. 
    If ctl.TextElement IsNot Nothing Then
        ctl.TextElement.Text = newValue.ToString()
    End If

설명

DependencyPropertyChangedEventArgs는 종속성 속성 값 변경과 관련된 두 가지 상황에 대한 데이터를 제공합니다.

PropertyChangedCallback 구현은 종속성 속성을 등록할 때 제공하는 속성 메타데이터의 선택적 부분입니다. 콜백은 내부적으로 종속성 속성 시스템에서 호출됩니다. 일반적으로 종속성 속성에 대한 자세한 내용은 사용자 지정 종속성 속성종속성 속성 개요를 참조하세요.

일반적으로 프라이빗 또는 내부 액세스를 사용하여 메서드를 정의합니다. 메서드는 정적이어야 합니다. 메서드가 정적이므로 PropertyChangedCallback 대리자의 DependencyObject 매개 변수(d)가 중요합니다. 속성이 변경되는 특정 종속성 개체 instance 식별합니다. 값을 수정하거나 강제 변환하거나 동일한 개체에 대한 응답으로 다른 계산 속성 값을 변경하는 등의 많은 작업의 경우 이 DependencyObject를 참조합니다. 일반적으로 변경되는 속성의 소유자 유형으로 캐스팅하려고 합니다. 소유자 유형은 DependencyProperty.Register 호출에서 이름으로 참조되는 형식입니다. PropertyChangedCallback 이 속성 메타데이터에 할당된 메타데이터는 동일한 호출의 일부입니다.

재귀 가능성에 유의하세요. PropertyChangedCallback이 호출되는 종속성 속성의 값을 변경하면 다시 호출됩니다. 예를 들어 콜백이 항상 값을 2로 나눈 Double 속성에 대한 콜백을 만든 경우 해당 콜백은 재귀적으로 호출되고 앱은 무한 루프에 있습니다.

서로 다른 두 개 이상의 종속성 속성이 서로 변경하기 위해 콜백을 정의하도록 하는 것은 합법적이지만 값이 안정화되지 않도록 의도하지 않은 순환 종속성을 만들지 않도록 주의해야 합니다.

PropertyChangedCallback은 이벤트 데이터의 OldValueNewValue가 다른 경우에만 호출됩니다.

OldValueNewValue 는 형식화되지 않으므로 수행하는 비교에 캐스트가 필요할 수 있습니다. 많은 종속성 속성 값이 값 형식을 사용하고 있습니다. 즉, 값 형식의 연산자 또는 다른 API를 사용하여 비교합니다. 이 기능은 일반적으로 값을 나타내는 구조체에서 유틸리티 API로 사용할 수 있습니다. 예를 들어 두께 값의 언어별 유틸리티 API를 사용하면 두께 값을 비교할 수 있습니다.

참고

C++를 사용하여 프로그래밍하는 경우 일부 Windows 런타임 구조체는 비데이타 멤버를 지원하지 않으므로 연산자 또는 기타 유틸리티를 지원하지 않습니다. 이러한 경우 C++ 코드에서 사용할 수 있는 비교 API를 제공하는 도우미 클래스 가 있습니다. 예를 들어 ColorHelper 클래스를 사용하여 Color 값을 비교합니다.

사용자 지정 이벤트에 DependencyPropertyChangedEventArgs 사용

사용자 지정 컨트롤 구현자는 종속성 속성 값 변경의 결과로 사용자 지정 이벤트가 발생하는 경우 DependencyPropertyChangedEventHandler 를 대리자 형식으로 사용하는 것을 고려할 수 있습니다. PropertyChangedCallback의 컨텍스트 내에서만 이러한 이벤트를 실행할 수 있습니다. 이는 변경된 값(속성, 이전 값 및 새 값)이 속성 시스템 수준에서 이벤트에 대해 보고되는 DependencyPropertyChangedEventArgs에 있어야 하기 때문입니다. 그러나 DependencyPropertyChangedEventArgs에 대한 생성자가 없으며 해당 속성 중 어느 것도 설정할 수 없으므로 DependencyPropertyChangedEventArgs 값을 가져오는 유일한 방법은 원래 PropertyChangedCallback 매개 변수에서 가져와서 사용자 지정 이벤트를 실행할 때 전달하는 것입니다.

속성

NewValue

보고된 변경 후 종속성 속성의 값을 가져옵니다.

OldValue

보고된 변경 전에 종속성 속성의 값을 가져옵니다.

Property

값이 변경된 종속성 속성의 식별자를 가져옵니다.

적용 대상

추가 정보