DependencyProperty.UnsetValue 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
속성이 존재하지만 속성 시스템 또는 앱 코드에서 설정한 값이 없음을 나타내는 대신 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
속성 값
설정되지 않은 값에 대한 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
.
UnsetValue
는 DependencyObject.GetValue 호출에서 반환되지 않습니다. 종속성 속성에 대해 DependencyObject.GetValue 를 호출하는 경우 다음 조건 중 하나는 항상 true입니다.
- 종속성 속성 메타 데이터에서 설정 된 기본 값이 고 해당 값이 반환 됩니다. 이 값은 속성 메타데이터의 DefaultValue에서 올 수 있습니다. 이 작업은 다음과 같습니다
null
. - 일부 다른 값은 값 우선 순위를 통해 설정되었으며(예: 스타일이 적용되었거나 바인딩 이 평가됨) 기본값은 더 이상 관련이 없습니다. 구체적으로 설정되어 있더라도 이 설정은 여전히 있을
null
수 있습니다. 값 우선 순위에 대한 자세한 내용은 종속성 속성 개요를 참조하세요.
DependencyObject.ReadLocalValue 는 요청된 속성이 로컬로 설정되지 않은 경우 반환 UnsetValue
됩니다.
참고
종속성 속성을 기본값 UnsetValue
으로 등록하지 마세요. 이 속성 소비자에 대 한 혼란 하 고 속성 시스템 내에서 의도하지 않은 결과 있을 것 이다.
UnsetValue
변환기가 원본 값을 변환할 수 없는 경우 데이터 바인딩에서 종속성 속성으로 변환을 제공하는 IValueConverter 구현에서 반환되어야 합니다. 변환기는 IValueConverter.Convert에서 해당 사례에 대한 예외를 throw해서는 안 됩니다. 이러한 예외는 UnhandledException 에서 처리를 추가해야 하는 런타임 예외로 표시되거나 더 나쁜 경우 사용자에게 실제 런타임 예외로 표시됩니다. 변환기 구현은 실패한 바인딩이 아무 작업도 수행하지 않고 값을 UnsetValue
제공하지 않고 바인딩 엔진이 이해하는 경우의 sentinel 값이 아니라 null
일반적인 바인딩 패턴을 따라야 합니다. 자세한 내용은 데이터 바인딩 심층 분석을 참조하세요.
적용 대상
추가 정보
피드백
다음에 대한 사용자 의견 제출 및 보기