다음을 통해 공유


CreateDefaultValueCallback 대리자

정의

종속성 속성 기본값의 정의를 연기하기 위해 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 

반환 값

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 아닌 PropertyMetadataCreateDefaultValueCallback을 제공하는 경우 속성의 기본값은 Just-In-Time으로 만들어지고 실제로 속성을 사용하는 스레드에서 확인할 수 있도록 보장됩니다. 즉, 속성은 레지스터로 기본값이 무엇인지 지연하지만 사용된 속성은 이제 스레드로부터 안전한 기본값을 제공할 수 있습니다.

일반적인 CreateDefaultValueCallback 은 값으로 사용되는 참조 형식에 대한 생성자를 호출하고 해당 참조 형식의 속성을 설정한 다음 반환하는 것 외에는 아무 작업도 수행하지 않아야 합니다.

PropertyMetadata instance 내에서 CreateDefaultValueCallback을 지정하려면 PropertyMetadata.Create를 사용하여 PropertyMetadata 생성자가 아닌 instance 만들어야 합니다.

적용 대상

추가 정보