Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Як MVVMCross обробляє оновлення при використанні одноразової прив’язки


Як MVVMCross обробляє оновлення при використанні одноразової прив’язки


MVVMCross обробляє оновлення при використанні одноразової прив'язки, передаючи дані з ViewModel в перегляд лише один раз, коли спочатку встановлено джерело прив'язки. Після цього первинного передачі прив'язка не активно контролює зміни або подій з ViewModel. Отже, будь -які наступні зміни властивості ViewModel не будуть відображені в перегляді, якщо сама обов'язкова джерело не буде скинута або реініціалізована.

Ключові точки одноразового прив'язки в MVVMCross:

1. Початкова передача даних: прив'язка передає дані з ViewModel до перегляду, коли вперше встановлюється зв'язок. Це, як правило, корисно для полів, які налаштовуються, але не змінюються часто після їх встановлення.

2. Немає безперервного моніторингу: на відміну від двосторонніх або односторонніх прив'язок, одноразові прив’язки не постійно контролюють ViewModel для змін. Це означає, що якщо властивість ViewModel зміниться після початкового прив’язки, перегляд не буде оновлюватися автоматично.

3. Використання випадків: Одноразова прив'язка зазвичай використовується в сценаріях, коли дані є статичними або рідко змінюються, наприклад, встановлення статичного тексту з мовних файлів. Після того, як мова буде обрана, користувачеві нечасто змінювати її часто, роблячи одноразові обов'язки придатними для таких випадків [1].

201 Однак це вимагає явної дії для скидання джерела зв'язування.

5. Обмеження динамічних поглядів: У динамічних видах, таких як ті, що використовують `mvxRecyClerview`, одноразові прив’язки можуть не поводитися, як очікувалося, якщо погляди будуть перероблені. У таких випадках обов'язок може бути переоцінений, коли погляди повторно використовуються, що може призвести до несподіваної поведінки [6].

Підводячи підсумок, одноразова прив'язка MVVMCross розроблена для сценаріїв, де дані встановлюються один раз і не потрібно динамічно оновлюватись. Це спрощує інфраструктуру прив'язки, уникаючи постійного моніторингу ViewModel для змін, але для оновлення подання перегляду потрібно ручне втручання, якщо дані ViewModel змінюються після початкового зв'язування.

Цитати:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-incection
[3] https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm?view=net-maui-9.0
[4] https://stackoverflow.com/questions/46558177/mvvmcross-updates-to-bound-property-in-view-not-propagating-to-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
4
[9] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[10] https://www.reddit.com/r/dotnetmaui/comments/103ai8p/mvvm_problems_having_troubles_with_data_bindings/
[11] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup