В MVVMcross одноразовое связывание и двустороннее связывание служат четким целям в управлении взаимодействием между представлением и ViewModel.
Единственное связывание
Однократное привязка используется для передачи данных из ViewModel в представление только один раз, когда установлен источник привязки. После этой первоначальной передачи привязка не отслеживает изменения в свойствах ViewModel и не обновляет представление, если сам источник привязки не сброшен. Этот режим полезен для полей, которые настраиваются, но не часто меняются после установки. Например, в MVVMcross одноразовое привязка используется для настройки статического текста из языковых файлов, поскольку пользователь обычно выбирает язык один раз и редко меняет его впоследствии [1] [10].
Двусторонняя переплета
Двусторонняя привязка, с другой стороны, устанавливает непрерывную, двунаправленную связь между представлением и ViewModel. Изменения в обновлениях ViewModel за триггер в другом. Этот режим особенно полезен при редактировании существующих данных, таких как заполнение форм, где как ввод пользователя, так и любые изменения от ViewModel должны быть отражены в режиме реального времени. Двухстороннее привязка обычно используется в MVVMcross и часто служит режимом по умолчанию для новых привязков [1] [2].
Ключевые различия
-Направление потока данных: одноразовое привязка обновляет представление только один раз один раз, в то время как двустороннее привязка обновляет как представление, так и ViewModel непрерывно.
-Мониторинг изменения: одноразовое привязка не отслеживает изменения после первоначального обновления, тогда как двустороннее привязка непрерывно контролирует и обновляет оба конца.
-Примеры использования: единовременный идеально подходит для статических или редко меняющихся данных, тогда как двусторонняя часть лучше подходит для интерактивных форм или динамического обмена данными.
Таким образом, одноразовое привязка используется для статической или начальной настройки данных, в то время как двустороннее привязка используется для интерактивных сценариев, где как представление, так и ViewModel должны отражать изменения друг друга в режиме реального времени.
Цитаты:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[4] https://softwareengineering.stackexchange.com/questions/322450/how-does-two-way-data-drizing-differ-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross-handbook/using-mvvmcross-to-create-your-first-xamarin-app/creathing-hondord-project/understand-data-binding-syntax
[7] https://stackoverflow.com/questions/13504906/what-is-two-way-связывание
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[11] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[12] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/