En MVVMCross, la unión única y la unión unidireccional son dos modos de enlace de datos distintos que tienen diferentes propósitos.
Atinguidad única
Enlace una vez transfiere los datos del Modelo View a la vista solo una vez, cuando la fuente de enlace se establece inicialmente. Después de esta transferencia inicial, el enlace no monitorea los cambios en el Modelo View y no actualiza la vista a menos que la fuente de enlace en sí misma se reinicie. Este modo es útil para campos que son configurables pero no cambian con frecuencia después de que se establezcan. Por ejemplo, en MVVMCross, la unión única se usa para configurar texto estático de archivos de lenguaje, ya que es común que los usuarios seleccionen un idioma una vez y no lo cambien con frecuencia a partir de entonces [1].
Atinción unidireccional
El enlace unidireccional, por otro lado, actualiza continuamente la vista cada vez que la propiedad correspondiente en el model de vista cambia. Esto significa que cualquier cambio en la propiedad de ViewModel se reflejará automáticamente en la vista. Sin embargo, los cambios realizados directamente a la vista no afectan el modelado View. La unión unidireccional es útil al mostrar datos que provienen de una fuente dinámica, como datos del sensor o alimentos en la red, donde la vista debe reflejar el último estado de ViewModel pero no necesita enviar actualizaciones [1].
Diferencias clave
-Actualización de frecuencia: una única vez que se actualiza la vista solo una vez en la configuración, mientras que el enlace unidireccional actualiza continuamente la vista cada vez que cambia ViewModel.
-Monitoreo de cambios: la unión única no monitorea los cambios en el modelado ViewModel después de la configuración inicial, mientras que la unión unidireccional escucha activamente los cambios en el Modelo ViewModel.
-Casos de uso: la única vez es ideal para datos estáticos o con poca frecuencia, mientras que unidireccional es más adecuado para datos dinámicos que deben mostrarse en tiempo real sin la interacción del usuario que afecte el modelo ViewModel.
En resumen, mientras que ambos modos transfieren datos del Modelo de View a la vista, la unión única lo hace solo una vez y no monitorea los cambios, mientras que la unión unidireccional actualiza continuamente la vista basada en los cambios de Modelo ViewModel.
Citas:[1] https://www.mvvmcross.com/documentation/fundamentals/data-sninging
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-kinding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default---mode-mode-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=netmaui-9.0
[6] https://yanxiaodi.gitbook.io/xamarin-mvvvmcross-handbook/Using-mvvvmcross-to-create-your-first-xamarin-app/creating-the-nroid-project/understanding-the-data-binding-syntax
[7] https://www.mvvmcross.com/documentation/advanced/custom-data-neping
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-kinding-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/