FrameworkElement.DataContextChanged Kejadian

Definisi

Terjadi ketika nilai properti FrameworkElement.DataContext berubah.

// Register
event_token DataContextChanged(TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;

// Revoke with event_token
void DataContextChanged(event_token const* cookie) const;

// Revoke with event_revoker
FrameworkElement::DataContextChanged_revoker DataContextChanged(auto_revoke_t, TypedEventHandler<FrameworkElement, DataContextChangedEventArgs const&> const& handler) const;
public event TypedEventHandler<FrameworkElement,DataContextChangedEventArgs> DataContextChanged;
function onDataContextChanged(eventArgs) { /* Your code */ }
frameworkElement.addEventListener("datacontextchanged", onDataContextChanged);
frameworkElement.removeEventListener("datacontextchanged", onDataContextChanged);
- or -
frameworkElement.ondatacontextchanged = onDataContextChanged;
Public Custom Event DataContextChanged As TypedEventHandler(Of FrameworkElement, DataContextChangedEventArgs) 
<frameworkElement DataContextChanged="eventhandler"/>

Jenis Acara

Keterangan

Properti FrameworkElement.DataContext memiliki perilaku bawaan di mana nilainya mewarisi semua elemen turunan FrameworkElement dari FrameworkElement tempat nilai DataContext ditetapkan. Perilaku ini memungkinkan sekumpulan elemen terkait untuk menggunakan konteks yang sama untuk mengikat properti sumber yang berbeda, yang sangat berguna untuk templat item, templat data, dan skenario pengikatan data lainnya. Karena DataContext mewarisi, ada potensi untuk setiap FrameworkElement yang menggunakan nilai yang diwariskan untuk mengaktifkan peristiwa DataContextChanged lain yang bersumber dari elemen pewarisan, bukan elemen induk, setelah elemen mendeteksi bahwa nilai DataContext yang diwariskan telah berubah. Jika Anda tidak menginginkan perilaku ini, Anda harus menangani peristiwa DataContextChanged di sumber induk, tempat peristiwa akan diaktifkan terlebih dahulu. Sebagai bagian dari logika handler Anda, atur nilai properti Yang Ditangani di data peristiwa DataContextChangedEventArgs ke true. Tindakan itu akan mencegah peristiwa dari perutean ke elemen anak.

Catatan

DataContextChanged memiliki perilaku perutean tetapi bukan peristiwa rute sejati (tidak memiliki pengidentifikasi RoutedEvent ). Selain itu, rute rute dari induk ke anak sedangkan rute peristiwa rute sejati dari anak ke induk. Jika Anda terbiasa dengan Windows Presentation Foundation (WPF), DataContextChanged mungkin dianggap sebagai peristiwa terowongan yang dirutekan oleh definisi perutean peristiwa Windows Presentation Foundation (WPF).

DataContextChanged berguna untuk skenario di mana logika kontrol atau logika berbasis kode lainnya menginginkan pemberitahuan bahwa konteks data untuk pengikatan telah berubah, yang sering berarti bahwa nilai terikat data akan berubah. Ini dapat berguna sebagai pemicu untuk menjalankan kode yang membuat perubahan berbasis konteks, lalu konteks baru dapat digunakan oleh pengikatan yang ada untuk menghitung ulang nilai. Ini juga berguna untuk kasus di mana Anda tidak ingin pengikatan yang dinyatakan sebelumnya dalam templat data, tetapi memerlukan pemberitahuan untuk perubahan. Dalam skenario ini Anda dapat menangani DataContextChanged untuk mendeteksi perubahan pada konteks data dan membuat perubahan langsung ke properti lain dalam kode Anda sebagai respons, sama seperti pengikatan yang dideklarasikan XAML secara dinamis melalui mesin pengikatan data. Misalnya, Anda mungkin memiliki kontrol kustom yang terutama untuk digunakan di dalam templat data, dan Anda ingin kontrol dapat melakukan operasi pengikatan tanpa deklarasi Pengikatan eksplisit baik di UI XAML aplikasi atau di templat data.

Berlaku untuk

Lihat juga