In MVVMCross is eenmalige gegevensbinding een modus waarin gegevens worden overgedragen van het viewModel naar de weergave slechts eenmaal, wanneer de binding wordt vastgesteld. Na deze initiële overdracht houdt de binding niet toe wijzigingen en voert geen updates uit tenzij de bindende bron zelf opnieuw wordt ingesteld. Hier zijn enkele veel voorkomende cases voor eenmalige gegevensbinding:
1. Statische tekst uit taalbestanden: eenmalige binding is met name handig bij het instellen van statische tekst uit taalbestanden. Zodra de taal is geselecteerd, is het ongewoon dat de gebruiker deze wijzigt, dus er is geen behoefte aan continue updates. Deze benadering helpt bij het handhaven van een schone en efficiënte bindingsopstelling, omdat het onnodige controles voor veranderingen vermijdt die waarschijnlijk niet zullen optreden [2].
2. Configureerbare maar zelden veranderende gegevens: voor velden die configureerbaar zijn, maar niet vaak veranderen nadat ze in eerste instantie zijn ingesteld, kan eenmalige binding gunstig zijn. Dit omvat instellingen of gegevens die zijn ingesteld tijdens de initialisatie en gedurende de looptijd van de toepassing constant blijven.
3. Performance-optimalisatie: hoewel er over het algemeen geen prestatieboete is voor het gebruik van eenrichtingsbindingen, kunnen eenmalige bindingen de prestaties verder optimaliseren door elke potentiële overhead geassocieerd met veranderingsdetectie te elimineren. Dit kan met name relevant zijn in scenario's waarvan bekend is dat de gegevens statisch zijn en geen updates vereisen.
4. Vermindering van onnodige updates: in gevallen waarin gegevens meestal statisch zijn en slechts eenmaal moeten worden weergegeven, voorkomt het gebruik van eenmalige binding onnodige updates. Dit kan helpen bij het verminderen van de computationele overhead geassocieerd met frequente controles op wijzigingen, vooral in complexe of data-intensieve toepassingen.
5. Vereenvoudiging van voorwaardelijke logica: door eenmalige binding te gebruiken voor statische gegevens, kunnen ontwikkelaars voorwaardelijke logica vereenvoudigen met betrekking tot schermindeling of gegevenspresentatie. Dit helpt bij het handhaven van een schonere codebase door dynamische gegevensverwerking te scheiden van statische gegevensweergave.
Samenvattend is eenmalige gegevensbinding in MVVMCross ideaal voor scenario's waarbij gegevens statisch zijn of zelden verandert, waardoor een efficiënte en eenvoudige gegevenspresentatie mogelijk is zonder de overhead van continue veranderingsmonitoring.
Citaten:[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[3] https://www.reddit.com/r/androiddev/comments/ux9379/what_are_the_use_cases_of_data_binding_and_when/
[4] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[5] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[6] http://stackoverflow.com/questions/10700445/in-mvvmcross-how-do-do-custom.-bind-properties
[7] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindens
[8] https://github.com/mvvmcross/mvvmcross/issues/421
[9] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/window-phone-build-mvvm-apps-with-xamarin-and-mvvmcross