Bagikan melalui


CoerceValueCallback Delegasikan

Definisi

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

d
DependencyObject

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:

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.

Berlaku untuk

Lihat juga