In MVVMCRoss, l'associazione una tantum e il legame a senso unico sono due distinte modalità di legame dei dati che servono a scopi diversi.
Binding una tantum
La binding una tantum trasferisce i dati dal ViewModel alla vista solo una volta, quando è inizialmente impostata la sorgente di associazione. Dopo questo trasferimento iniziale, l'associazione non monitora le modifiche nel ViewModel e non aggiorna la vista a meno che non venga ripristinato la fonte di associazione stessa. Questa modalità è utile per i campi configurabili ma non cambiano frequentemente dopo che sono stati impostati. Ad esempio, in MVVMCRoss, l'associazione una tantum viene utilizzata per l'impostazione del testo statico dai file di lingua, in quanto è comune per gli utenti selezionare una lingua una volta e non cambiarla frequentemente in seguito [1].
Binding a senso unico
L'associazione di sola andata, d'altra parte, aggiorna continuamente la vista ogni volta che la proprietà corrispondente nella ViewModel cambia. Ciò significa che eventuali modifiche alla proprietà di ViewModel si rifletteranno automaticamente nella vista. Tuttavia, le modifiche apportate direttamente alla vista non influiscono sul ViewModel. Il legame a senso unico è utile quando si visualizzano dati provenienti da una fonte dinamica, come i dati dei sensori o i feed di rete, in cui la vista dovrebbe riflettere l'ultimo stato del ViewModel ma non è necessario inviare aggiornamenti ad esso [1].
differenze chiave
-Aggiorna la frequenza: l'associazione una tantum aggiorna la vista solo una volta all'impostazione, mentre l'associazione di un senso aggiorna continuamente la vista ogni volta che la ViewModel cambia.
-Monitoraggio delle modifiche: l'associazione una tantum non monitora le modifiche nel ViewModel dopo la configurazione iniziale, mentre l'associazione unidirezionale ascolta attivamente le modifiche nel ViewModel.
-Casi d'uso: una tantum è l'ideale per la modifica di dati statici o raramente, mentre una via è più adatta per i dati dinamici che devono essere visualizzati in tempo reale senza l'interazione dell'utente che influisce sul ViewModel.
In sintesi, mentre entrambe le modalità trasferiscono i dati dal ViewModel alla vista, l'associazione una tantum lo fa solo una volta e non monitora le modifiche, mentre l'associazione a senso unico aggiorna continuamente la vista in base alle modifiche a ViewModel.
Citazioni:[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-used-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-maui-9.0
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-android-project/understanding-the-data-blinding-sntentax
[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-twwo-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-apetime-in-mvxrecyclerview
[11] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/