Dalam MVVMCross, ikatan satu kali dan satu arah mengikat adalah dua mode pengikatan data yang berbeda yang melayani tujuan yang berbeda.
Binding satu kali
Mengikat transfer data satu kali dari viewmodel ke tampilan hanya sekali, ketika sumber pengikat pada awalnya diatur. Setelah transfer awal ini, pengikatan tidak memantau perubahan dalam viewmodel dan tidak memperbarui tampilan kecuali sumber pengikat itu sendiri diatur ulang. Mode ini berguna untuk bidang yang dapat dikonfigurasi tetapi tidak sering berubah setelah diatur. Misalnya, di MVVMCross, pengikatan satu kali digunakan untuk mengatur teks statis dari file bahasa, karena adalah umum bagi pengguna untuk memilih bahasa sekali dan tidak sering mengubahnya sesudahnya [1].
Ikatan satu arah
Ikatan satu arah, di sisi lain, terus memperbarui tampilan setiap kali properti yang sesuai di ViewModel berubah. Ini berarti bahwa setiap perubahan pada properti ViewModel akan secara otomatis tercermin dalam tampilan. Namun, perubahan yang dilakukan langsung ke tampilan tidak mempengaruhi viewmodel. Ikatan satu arah berguna ketika menampilkan data yang berasal dari sumber dinamis, seperti data sensor atau umpan jaringan, di mana tampilan harus mencerminkan keadaan terbaru dari ViewModel tetapi tidak perlu mengirim pembaruan kembali ke sana [1].
Perbedaan utama
-Perbarui Frekuensi: Mengikat satu kali memperbarui tampilan hanya sekali saat diatur, sementara ikatan satu arah terus-menerus memperbarui tampilan setiap kali ViewModel berubah.
-Ubah Pemantauan: Ikatan satu kali tidak memantau perubahan pada ViewModel setelah pengaturan awal, sedangkan pengikatan satu arah secara aktif mendengarkan perubahan pada ViewModel.
-Kasus Penggunaan: Satu kali sangat ideal untuk data statis atau jarang mengubah, sementara satu arah lebih cocok untuk data dinamis yang perlu ditampilkan secara real-time tanpa interaksi pengguna yang mempengaruhi ViewModel.
Singkatnya, sementara kedua mode mentransfer data dari viewmodel ke tampilan, ikatan satu kali hanya melakukannya sekali dan tidak memantau perubahan, sedangkan pengikatan satu arah terus-menerus memperbarui tampilan berdasarkan perubahan viewmodel.
Kutipan:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-ued-in-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-mau-9.0
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-droid-procject/understanding-the-data-binding-syntax
[7] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxRecyclerview
[11] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/