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

설정되지 않은 값에 대한 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 값입니다. UnsetValue는 대부분의 참조 형식 값에 유효한 속성 값이며 종속성 속성에 대한 메타데이터에서 자주 사용되는 DefaultValue이기 때문에 null 대신 사용됩니다null.

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

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

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

참고

종속성 속성을 기본값 UnsetValue으로 등록하지 마세요. 이 속성 소비자에 대 한 혼란 하 고 속성 시스템 내에서 의도하지 않은 결과 있을 것 이다.

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

적용 대상

추가 정보