다음을 통해 공유


DependencyPropertyChangedCallback 대리자

정의

RegisterPropertyChangedCallback 기술에 등록된 속성 변경 알림에 대해 속성 값이 변경될 때 호출되는 콜백을 나타냅니다.

public delegate void DependencyPropertyChangedCallback(DependencyObject ^ sender, DependencyProperty ^ dp);
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1166556438, 10175, 19393, 172, 38, 148, 193, 96, 31, 58, 73)]
class DependencyPropertyChangedCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(1166556438, 10175, 19393, 172, 38, 148, 193, 96, 31, 58, 73)]
public delegate void DependencyPropertyChangedCallback(DependencyObject sender, DependencyProperty dp);
Public Delegate Sub DependencyPropertyChangedCallback(sender As DependencyObject, dp As DependencyProperty)

매개 변수

sender
DependencyObject

속성 변경 알림에 등록할 속성을 보유하는 개체 instance.

dp
DependencyProperty

속성 변경 알림에 등록할 속성의 종속성 속성 식별자입니다.

특성

Windows 요구 사항

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

예제

이 예제에서는 DependencyPropertyChangedCallback 대리자를 사용하여 TextBlockTag 속성에 대한 변경 내용을 수신 대기하는 방법을 보여줍니다.

<TextBlock x:Name="textBlock1" Text="Hello, world"/>
long tagToken;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
    long 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 호출에 지정된 매개 변수와 이를 호출한 instance 기반으로 합니다.

콜백에는 변경된 속성 값을 식별하는 dp 매개 변수가 있으므로 동일한 콜백을 사용하여 여러 속성 변경 사례를 처리할 수 있으며 논리는 서로 다른 각 속성에 대한 사례를 작성할 수 있습니다.

성능상의 이유로 DependencyPropertyChangedEventArgs처럼 PropertyChangedCallback 메서드에서 OldValue / NewValue 속성 쌍을 얻지 못합니다. 속성 값은 콜백 전에 변경되므로 메서드가 호출되면 DependencyObject.GetValue 를 호출하여 새 값을 검색할 수 있습니다.

적용 대상

추가 정보