Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Чем одноразовое связывание отличается от одностороннего связывания в mvvmcross


Чем одноразовое связывание отличается от одностороннего связывания в mvvmcross


В MVVMcross одноразовое связывание и одностороннее связывание представляют собой два различных режима связывания данных, которые служат разным целям.

Единственное связывание

Однократное привязка передает данные из ViewModel в представление только один раз, когда первоначально установлен источник связывания. После этого первоначального передачи привязка не отслеживает изменения в ViewModel и не обновляет представление, если сам источник привязки не сброшен. Этот режим полезен для настраиваемых полей, но не изменяются часто после их установки. Например, в MVVMcross одноразовое привязка используется для настройки статического текста из языковых файлов, так как пользователи обычно выбирают язык один раз и не изменяют его часто после этого [1].

одностороннее переплет

Одностороннее привязка, с другой стороны, непрерывно обновляет представление, когда изменяется соответствующее свойство в ViewModel. Это означает, что любые изменения в свойстве ViewModel будут автоматически отражаться в представлении. Однако изменения, внесенные непосредственно для представления, не влияют на ViewModel. Одностороннее привязка полезно при отображении данных, которые поступают из динамического источника, такого как данные датчиков или сетевые каналы, где представление должно отражать последнее состояние ViewModel, но не нужно отправлять обновления обратно [1].

Ключевые различия

-Частота обновления: единовременное привязка обновляет представление только один раз при настройке, в то время как одностороннее привязка непрерывно обновляет представление, когда изменяется ViewModel.
-Мониторинг изменения: одноразовое привязка не отслеживает изменения в ViewModel после начальной настройки, тогда как одностороннее привязка активно слушает изменения в ViewModel.
-Примеры использования: единовременный идеально подходит для статических или редко меняющихся данных, в то время как одностороннее место лучше подходит для динамических данных, которые необходимо отображать в режиме реального времени без взаимодействия с пользователем, влияющим на ViewModel.

Таким образом, в то время как оба режима передают данные из ViewModel в представление, одноразовая привязка делает это только один раз и не отслеживает изменения, тогда как одностороннее привязка непрерывно обновляет представление на основе изменений ViewModel.

Цитаты:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default-dring-mode-used-in-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[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://www.mvvmcross.com/documentation/advanced/custom-data-binding
[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://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/