CreateDefaultValueCallback 대리자
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
종속성 속성 기본값의 정의를 연기하기 위해 PropertyMetadata 생성자의 일부로 호출할 수 있는 메서드를 나타냅니다.
public delegate Platform::Object ^ CreateDefaultValueCallback();
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.Guid(2139130885, 10948, 23257, 172, 138, 38, 137, 3, 51, 216, 30)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object
반환 값
Platform::Object
원하는 기본값입니다.
- 특성
예제
이 예제에서는 사용자 지정 종속성 속성 시나리오에서 CreateDefaultValueCallback 을 사용하기 위한 의사 코드를 보여 줍니다. 특히 DependencyProperty.Register 호출에 사용할 PropertyMetadata를 만듭니다(표시되지 않음).
PropertyMetadata metadata = PropertyMetadata.Create(
new CreateDefaultValueCallback(() =>
{
return new CustomClass() //a DependencyObject
{
CustomProperty1 = "default", //DependencyProperty of type String
CustomProperty2 = -1; //DependencyProperty of type Int32
}
})
설명
사용자 지정 종속성 속성을 등록할 때 종속성 속성의 모든 사용에 대한 기본값을 제공하는 메타데이터( PropertyMetadata 값)를 제공할 수 있습니다. 메타데이터에서 직접 해당 값을 즉시 값으로 제공하는 것이 적절한 경우가 많습니다. 값 속성에 대해 기본값 -1을 지정하는 등 모든 값 형식 값에 int
대해 항상 작동합니다. 그러나 DependencyObject 값과 같이 참조 속성인 속성의 기본값을 보고하려는 경우 종속성 속성의 작동 방식과 관련된 스레딩 문제가 발생할 수 있습니다. 모든 DependencyObject 개체는 항상 UI 스레드에 만들어집니다. 그러나 속성을 등록하는 스레드와 결국 개체의 instance 사용하고 기본값에 액세스하려는 스레드가 동일한 UI 스레드가 아닌 것일 수 있습니다. 고정된 instance 아닌 PropertyMetadata에 CreateDefaultValueCallback을 제공하는 경우 속성의 기본값은 Just-In-Time으로 만들어지고 실제로 속성을 사용하는 스레드에서 확인할 수 있도록 보장됩니다. 즉, 속성은 레지스터로 기본값이 무엇인지 지연하지만 사용된 속성은 이제 스레드로부터 안전한 기본값을 제공할 수 있습니다.
일반적인 CreateDefaultValueCallback 은 값으로 사용되는 참조 형식에 대한 생성자를 호출하고 해당 참조 형식의 속성을 설정한 다음 반환하는 것 외에는 아무 작업도 수행하지 않아야 합니다.
PropertyMetadata instance 내에서 CreateDefaultValueCallback을 지정하려면 PropertyMetadata.Create를 사용하여 PropertyMetadata 생성자가 아닌 instance 만들어야 합니다.