FrameworkElement.DataContextChanged Kejadian
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.
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 lain DataContextChanged
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 DataContextChanged
peristiwa 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 yang benar (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 penerowongan 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 pada properti lain dalam kode Anda sebagai respons, sama seperti pengikatan yang dideklarasikan XAML dilakukan 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 eksplisit Binding
baik di UI XAML aplikasi atau di templat data.