Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ¿Cómo se maneja MVVMCross actualizaciones cuando se usa un enlace único?


¿Cómo se maneja MVVMCross actualizaciones cuando se usa un enlace único?


MVVMCross maneja las actualizaciones cuando se usa un enlace único transfiriendo datos desde ViewModel a la vista solo una vez, cuando la fuente de enlace se establece inicialmente. Después de esta transferencia inicial, el enlace no monitorea activamente los mensajes o eventos de cambio desde el modelado ViewModel. Por lo tanto, cualquier cambio posterior a la propiedad del Modelo ViewModel no se reflejará en la vista a menos que la fuente de enlace en sí sea restablecida o reinicializada.

Puntos clave de la unión única en MVVMCross:

1. Transferencia de datos inicial: el enlace transfiere datos del Modelo ViewModel a la vista cuando se establece por primera vez el enlace. Esto suele ser útil para campos que son configurables pero que no cambian con frecuencia después de que se hayan establecido.

2. Sin monitoreo continuo: a diferencia de los enlaces bidireccionales o unidireccionales, los enlaces únicos no monitorean continuamente el Modelo View para los cambios. Esto significa que si la propiedad de ViewModel cambia después del enlace inicial, la vista no se actualizará automáticamente.

3. Casos de uso: la unión única se usa comúnmente en escenarios en los que los datos son estáticos o rara vez cambian, como establecer texto estático de archivos de lenguaje. Una vez que se selecciona un idioma, es poco común que el usuario lo cambie con frecuencia, haciendo que un enlace único sea adecuado para tales casos [1].

4. Restablecimiento de la fuente de enlace: si la fuente de enlace se restablece o reinicia, la unión única transferirá los nuevos datos del Modelo ViewModel a la vista nuevamente. Sin embargo, esto requiere una acción explícita para restablecer la fuente de enlace.

5. Limitaciones en las vistas dinámicas: en vistas dinámicas, como las que usan `mvxrecyclerview`, los enlaces únicos pueden no comportarse como se esperaba si las vistas se reciclan. En tales casos, la unión puede reevaluarse a medida que se reutilizan las opiniones, lo que puede conducir a un comportamiento inesperado [6].

En resumen, el enlace único de MVVMCross está diseñado para escenarios en los que los datos se establecen una vez y no es necesario actualizar dinámicamente. Simplifica la infraestructura de unión al evitar el monitoreo continuo del modelado de visión para los cambios, pero requiere una intervención manual para actualizar la vista si los datos de ViewModel cambian después de la unión inicial.

Citas:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-sninging
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-inyection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=netmaui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross-updates-to-property-in-view-not-propagating-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvvmcross---binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-patterns-for-asynchonous-mvvvm-applations-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=netmaui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troufles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup