Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon In che modo MVVMCRoss gestisce gli aggiornamenti quando si utilizza una tantum


In che modo MVVMCRoss gestisce gli aggiornamenti quando si utilizza una tantum


MVVMCRoss gestisce gli aggiornamenti quando si utilizza un tantum di associazione trasferendo i dati dal ViewModel alla vista solo una volta, quando la sorgente di associazione è inizialmente impostata. Dopo questo trasferimento iniziale, l'associazione non monitora attivamente i messaggi di modifica o gli eventi dal ViewModel. Pertanto, eventuali modifiche successive alla proprietà di ViewModel non si rifletteranno nella vista a meno che la fonte di associazione stessa non venga ripristinata o renizializzata.

Punti chiave di vincolo una tantum in mvvmcross:

1. Trasferimento iniziale dei dati: il legame trasferisce i dati dal ViewModel alla vista quando il legame viene stabilito per la prima volta. Questo è in genere utile per i campi che sono configurabili ma non cambiano frequentemente dopo che sono stati impostati.

2. Nessun monitoraggio continuo: a differenza dei legami a due vie o unidirezionali, i legami una tantum non monitorano continuamente il moderna delle modifiche. Ciò significa che se la proprietà di ViewModel cambia dopo l'associazione iniziale, la vista non verrà aggiornata automaticamente.

3. Casi d'uso: l'associazione una tantum è comunemente utilizzata negli scenari in cui i dati sono statici o raramente cambia, come l'impostazione del testo statico dai file di lingua. Una volta selezionata una lingua, è raro che l'utente lo modifica frequentemente, rendendo una tantum di legame adatto a tali casi [1].

4. Ripristino della fonte di associazione: se la sorgente di rilegatura viene ripristinata o renitializzata, l'associazione una tantum trasferirà nuovamente i nuovi dati dal ViewModel alla vista. Tuttavia, ciò richiede un'azione esplicita per ripristinare la fonte di vincolo.

5. Limitazioni nelle viste dinamiche: nelle viste dinamiche, come quelle che utilizzano `mvxrecyclerview`, i legami una tantum potrebbero non comportarsi come previsto se le opinioni sono riciclate. In tali casi, il legame può essere rivalutato quando le opinioni vengono riutilizzate, il che può portare a comportamenti imprevisti [6].

In sintesi, l'associazione una tantum di MVVMCROSS è progettata per scenari in cui i dati vengono impostati una volta e non devono essere aggiornati in modo dinamico. Semplifica l'infrastruttura di legame evitando il monitoraggio continuo del ViewModel per le modifiche, ma richiede un intervento manuale per aggiornare la vista se i dati di ViewModel cambiano dopo l'associazione iniziale.

Citazioni:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dipendency-iniection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross-updates-to-bound-property-in-view-not-propagating-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-apetime-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-asyncronous-mvvm-applications-data-binding
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_probles_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-using-app-and-setup