CreateDefaultValueCallback Delegasikan
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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 .