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.

Цитати:
[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-binding-mode-suse-ina-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
.
[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-twoway
[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/