CoerceValueCallback 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.
Menyediakan templat untuk metode yang dipanggil setiap kali nilai properti dependensi dievaluasi ulang, atau paksaan secara khusus diminta.
public delegate System::Object ^ CoerceValueCallback(DependencyObject ^ d, System::Object ^ baseValue);
public delegate object CoerceValueCallback(DependencyObject d, object baseValue);
type CoerceValueCallback = delegate of DependencyObject * obj -> obj
Public Delegate Function CoerceValueCallback(d As DependencyObject, baseValue As Object) As Object
Parameter
Objek tempat properti berada. Ketika panggilan balik dipanggil, sistem properti akan meneruskan nilai ini.
- baseValue
- Object
Nilai baru properti , sebelum upaya paksaan apa pun.
Tampilkan Nilai
Nilai yang dikoercasi (dengan jenis yang sesuai).
Contoh
Contoh berikut mencakup implementasi panggilan balik ini untuk memaksa nilai properti dependensi yang disimpan berdasarkan input lain, seperti nilai properti lain. Dalam hal ini, panggilan balik memeriksa untuk melihat apakah ShirtType properti sesuai dengan jenis kemeja yang memiliki tombol; jika demikian menetapkan warna default awal untuk ButtonColor, jika jenis kemeja tidak memiliki tombol, properti memaksa ButtonColor nilai kembali ke nilai awal, yang menyebabkan UI (tidak ditampilkan) untuk menghapus dropdown tersebut dari pilihan yang efektif.
private static object CoerceButtonColor(DependencyObject d, object value)
{
ShirtTypes newShirtType = (d as Shirt).ShirtType;
if (newShirtType == ShirtTypes.Dress || newShirtType == ShirtTypes.Bowling)
{
return ButtonColors.Black;
}
return ButtonColors.None;
}
Private Shared Function CoerceButtonColor(ByVal d As DependencyObject, ByVal value As Object) As Object
Dim newShirtType As ShirtTypes = (TryCast(d, Shirt)).ShirtType
If newShirtType = ShirtTypes.Dress OrElse newShirtType = ShirtTypes.Bowling Then
Return ButtonColors.Black
End If
Return ButtonColors.None
End Function
Keterangan
Panggilan balik berdasarkan CoerceValueCallback dapat ditetapkan ke properti dependensi melalui beberapa teknik yang berbeda. Masing-masing teknik ini mengharuskan Anda terlebih dahulu membuat objek metadata properti baru (PropertyMetadata, atau kelas turunan seperti FrameworkPropertyMetadata). Buat objek metadata menggunakan tanda tangan konstruktor yang mengambil parameter , dan tetapkan parameter tersebut coerceValueCallback ke handler panggilan balik Anda. Atau buat metadata dengan tanda tangan apa pun dan atur CoerceValueCallback properti sebelum menempatkan metadata yang digunakan.
Ketika Anda memiliki metadata ini, Anda dapat:
Tentukan properti dependensi baru pada kelas baru, menggunakan salah satu tanda tangan Register, memberikan metadata sebagai
typeMetadatanilai.Ambil alih metadata (panggilan OverrideMetadata(Type, PropertyMetadata)) untuk properti dependensi yang ada, ketika Anda berasal dari kelas yang memiliki properti dependensi.
Tambahkan properti dependensi yang ada ke kelas baru DependencyObject , menggunakan metadata baru, dengan memanggil AddOwner(Type, PropertyMetadata).
Implementasi panggilan balik ini harus memeriksa nilai dan baseValue menentukan berdasarkan nilai atau jenis apakah ini adalah nilai yang perlu dipaksa lebih lanjut.
CoerceValueCallback untuk properti dependensi dipanggil kapan saja sistem properti atau pemanggil lain memanggil instans CoerceValueDependencyObject, menentukan pengidentifikasi properti tersebut dpsebagai .
Perubahan pada nilai properti mungkin berasal dari peserta yang mungkin dalam sistem properti. Ini termasuk gaya, pembatalan umum, pemicu, pewarisan nilai properti, dan pengaturan nilai lokal.
Umumnya Anda harus menghindari menentukan lebih dari satu CoerceValueCallback untuk properti dependensi tertentu (menimpa atau menambahkan dengan metadata baru untuk properti dependensi yang sudah memiliki CoerceValueCallback). Hanya salah satu panggilan balik yang dapat bertindak. Panggilan balik bertindak akan menjadi yang diterapkan ke kelas yang paling turunan dalam warisan dibandingkan dengan pemanggil DependencyObject . Panggilan balik lain seperti yang ditetapkan ke metadata untuk properti dependensi karena ada lebih tinggi dalam hierarki pemilik diganti ketika metadata ditimpa.
Metode Ekstensi
| Nama | Deskripsi |
|---|---|
| GetMethodInfo(Delegate) |
Mendapatkan objek yang mewakili metode yang diwakili oleh delegasi yang ditentukan. |