DependencyProperty.UnsetValue 속성

정의

속성이 존재하지만 속성 시스템 또는 앱 코드에서 설정한 값이 없음을 나타내기 위해 null 이 아닌 속성 시스템에서 사용하는 정적 값을 지정합니다.

public:
 static property Platform::Object ^ UnsetValue { Platform::Object ^ get(); };
static IInspectable UnsetValue();
public static object UnsetValue { get; }
var object = DependencyProperty.unsetValue;
Public Shared ReadOnly Property UnsetValue As Object

속성 값

Object

Platform::Object

IInspectable

설정되지 않은 값의 sentinel 값입니다.

예제

다음은 ReadLocalValue를 사용하여 기존 로컬 값을 확인하는 예제입니다. UnsetValue를 반환하지 않음으로 표시된 대로 로컬 값이 있는 경우 ClearValue를 호출하여 기존 로컬 값이 제거됩니다.

public static bool ClearSetProperty(DependencyObject targetObject, DependencyProperty targetDP)
{
    if (targetObject == null || targetDP == null)
    {
        throw new ArgumentNullException();
    }
    object localValue = targetObject.ReadLocalValue(targetDP);
    if (localValue == DependencyProperty.UnsetValue)
    {
        return false;
    }
    else
    {
        targetObject.ClearValue(targetDP);
        return true;
    }
}
Public Shared Function ClearSetProperty(targetObject As DependencyObject, targetDP As DependencyProperty) As Boolean
    If targetObject Is Nothing Or targetDP Is Nothing Then
        Throw New ArgumentNullException()
    End If
    Dim localValue As Object = targetObject.ReadLocalValue(targetDP)
    If localValue = DependencyProperty.UnsetValue Then
        ClearSetProperty = False
    Else
        targetObject.ClearValue(targetDP)
        ClearSetProperty = True
    End If
End Function

설명

UnsetValue는 종속성 속성 시스템에서 요청된 종속성 속성 값을 확인할 수 없는 시나리오에 사용되는 sentinel 값입니다. null은 대부분의 참조 형식 값에 유효한 속성 값이며 종속성 속성에 대한 메타데이터에서 자주 사용되는 DefaultValue이므로 UnsetValuenull이 아닌 사용됩니다.

UnsetValue는 DependencyObject.GetValue 호출에서 반환되지 않습니다. 종속성 속성에 대해 DependencyObject.GetValue 를 호출하는 경우 다음 조건 중 하나는 항상 true입니다.

  • 종속성 속성 메타 데이터에서 설정 된 기본 값이 고 해당 값이 반환 됩니다. 이 값은 속성 메타데이터의 DefaultValue에서 올 수 있습니다. null일 수 있습니다.
  • 일부 다른 값은 값 우선 순위를 통해 설정되었으며(예: 스타일이 적용되었거나 Binding 이 평가됨) 기본값은 더 이상 관련이 없습니다. 구체적으로 설정되었지만 여전히 null일 수 있습니다. 값 우선 순위에 대한 자세한 내용은 종속성 속성 개요를 참조하세요.

DependencyObject.ReadLocalValue 는 요청된 속성이 로컬로 설정되지 않은 경우 UnsetValue를 반환합니다.

참고

종속성 속성을 기본값 UnsetValue로 등록하지 마세요. 이는 속성 소비자에게 혼란스러울 것이며 속성 시스템 내에서 의도하지 않은 결과를 초래할 수 있습니다.

변환기가 원본 값을 변환할 수 없는 경우 데이터 바인딩에서 종속성 속성으로 변환을 제공하는 IValueConverter 구현에서 UnsetValue 를 반환해야 합니다. 변환기는 IValueConverter.Convert에서 해당 사례에 대한 예외를 throw해서는 안 됩니다. 이러한 예외는 UnhandledException 에서 처리를 추가해야 하는 런타임 예외로 표시되거나 더 나쁜 경우 사용자에게 실제 런타임 예외로 표시됩니다. 변환기 구현은 실패한 바인딩이 아무 작업도 하지 않고 값을 제공하지 않는 일반 바인딩 패턴을 따라야 하며, Null 이 아닌 UnsetValue는 바인딩 엔진이 이해하는 경우의 sentinel 값입니다. 자세한 내용은 데이터 바인딩 심층 분석을 참조하세요.

적용 대상

추가 정보