Share via


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

설명

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

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

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

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

참고

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

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

적용 대상

추가 정보