CreateDefaultValueCallback Delegasikan

Definisi

Mewakili metode yang dapat dipanggil sebagai bagian dari konstruktor PropertyMetadata untuk menangguhkan definisi nilai default properti dependensi.

public delegate Platform::Object ^ CreateDefaultValueCallback();
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
class CreateDefaultValueCallback : MulticastDelegate
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.Guid(3605836076, 5557, 20168, 185, 92, 205, 210, 8, 240, 129, 83)]
public delegate object CreateDefaultValueCallback();
Public Delegate Function CreateDefaultValueCallback() As Object 

Tampilkan Nilai

Object

Platform::Object

IInspectable

Nilai default yang diinginkan.

Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)

Contoh

Contoh ini menunjukkan pseudocode untuk menggunakan CreateDefaultValueCallback dalam skenario properti dependensi kustom. Secara khusus, ini membuat PropertyMetadata untuk digunakan dalam panggilan DependencyProperty.Register (tidak ditampilkan).

PropertyMetadata metadata = PropertyMetadata.Create(
    new CreateDefaultValueCallback(() =>
    {
        return new CustomClass() //a DependencyObject
        {
            CustomProperty1 = "default", //DependencyProperty of type String 
            CustomProperty2 = -1; //DependencyProperty of type Int32
        }
    })

Keterangan

Saat mendaftarkan properti dependensi kustom, Anda dapat menyediakan metadata (nilai PropertyMetadata ) yang menyediakan nilai default untuk semua penggunaan properti dependensi. Sering kali cukup untuk memberikan nilai tersebut langsung dalam metadata sebagai nilai langsung. Ini akan selalu berfungsi untuk nilai jenis nilai apa pun, misalnya menentukan nilai default -1 untuk properti nilai int . Namun, jika Anda ingin melaporkan nilai default untuk properti yang merupakan properti referensi, seperti nilai DependencyObject , Anda dapat mengalami masalah utas yang terkait dengan cara kerja properti dependensi. Semua objek DependencyObject selalu dibuat pada utas UI. Tetapi ada kemungkinan bahwa utas yang mendaftarkan properti dan utas yang akhirnya menggunakan instans objek dan mencoba mengakses default bukanlah utas UI yang sama. Jika Anda memberikan CreateDefaultValueCallback di PropertyMetadata Anda daripada instans tetap, nilai default properti dibuat tepat waktu dan dijamin dapat diakses oleh utas yang benar-benar menggunakan properti . Dengan kata lain properti sebagai register menunda apa nilai defaultnya, tetapi properti seperti yang digunakan sekarang dapat memberikan nilai default yang aman untuk utas.

CreateDefaultValueCallback yang khas tidak boleh melakukan apa pun selain memanggil konstruktor untuk jenis referensi yang digunakan sebagai nilai, dan mengatur properti dari jenis referensi tersebut, lalu mengembalikannya.

Untuk menentukan CreateDefaultValueCallback dalam instans PropertyMetadata , Anda harus menggunakan PropertyMetadata.Create untuk membuat instans, bukan konstruktor PropertyMetadata .

Berlaku untuk

Lihat juga