Die Verwendung einer einmaligen Bindung in MVVMCross bietet mehrere Vorteile gegenüber anderen Bindungsmodi, insbesondere in bestimmten Szenarien:
1. Reduzierter Overhead: Einmalbindung ist nützlich, wenn Sie einen Wert vom ViewModel nur einmal an die Ansicht festlegen müssen, ohne die Änderungen kontinuierlich zu überwachen. Dies reduziert den Overhead, der mit der Aufrechterhaltung einer Bindung verbunden ist, da das Framework nicht nach Updates aus dem ViewModel anhören muss. Dies ist besonders vorteilhaft für statische Daten, die sich nicht ändern, wenn sie festgelegt sind, z. B. Text aus Sprachdateien [1] [3].
2. Leistung in recycelten Ansichten: Während einmalige Bindungen in recycelten Ansichten wie in "mvxRecyclerview" problematisch sein können, sind sie ideal für Szenarien, in denen Ansichten nicht recycelt werden oder bei denen die Daten statisch sind und nicht dynamisch aktualisiert werden müssen. In Fällen, in denen Ansichten recycelt werden, verhalten sich einmalige Bindungen möglicherweise nicht wie erwartet, da die Ansichten wiederverwendet und abprallen, wie sie auf dem Bildschirm erscheinen [7].
3.. Vereinfachte Bindungsinfrastruktur: Da einmalige Bindungen nur dann aktualisieren, wenn sich der Bindungskontext ändert, vereinfachen sie die Bindungsinfrastruktur, indem sie die Notwendigkeit der Überwachung von Quelleigenschaftenänderungen beseitigen. Dies kann zu saubererem Code und weniger potenziellen Problemen im Zusammenhang mit kontinuierlichen Updates führen [4].
4. Für schreibgeschützte Daten geeignet: Einmalbindung ist gut geeignet, um nur schreibgeschützte Daten anzuzeigen, die zur Initialisierungszeit bekannt sind und sich nicht ändert. Dies beinhaltet Szenarien wie die Anzeige statischer Informationen wie Restaurantstunden, in denen die Daten einmal festgelegt werden und keine weiteren Aktualisierungen benötigen [3].
5. Konsistenz mit statischen Daten: In Anwendungen, in denen bestimmte Daten statisch sind und sich nicht häufig ändern, stellt die einmalige Bindung sicher, dass diese Daten ohne unnötige Aktualisierungen korrekt eingestellt werden. Dies hält die Konsistenz in der Benutzeroberfläche ohne den Overhead der kontinuierlichen Überwachung [1] [3].
Zusammenfassend ist eine einmalige Bindung in MVVMCross von Vorteil, wenn es sich um statische Daten handelt, die keine kontinuierlichen Aktualisierungen erfordern und reduziertes Overhead und vereinfachtes Bindungsmanagement bieten. Es ist jedoch möglicherweise nicht für dynamische oder häufig ändernde Daten oder in Szenarien geeignet, in denen Ansichten recycelt werden.
Zitate:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://stackoverflow.com/questions/41768962/mvmcross-default-binding-mode-used-in-a-project
[3] https://stackoverflow.com/questions/25460030/when-s-use-mvmcross-data-bindings
[4] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[5] https://www.mvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/17156368/
[7] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvm-apps-apps-apps-xamarin-and-mvmcross
[9] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle