Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Есть ли какие-либо ограничения на использование единовременного привязки в mvvmcross


Есть ли какие-либо ограничения на использование единовременного привязки в mvvmcross


Однократное привязка в MVVMcross-это полезный режим привязки, который переносит значения из ViewModel в представление только один раз, когда установлен источник связывания. Он не активно отслеживает изменения в ViewModel, что означает, что он не обновляет представление, если изменятся свойства ViewModel после начальной привязки. Вот некоторые ограничения и соображения для использования единовременного привязки:

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

2. Статические данные: одноразовое привязка лучше всего используется для статических или только чтения данных, которые часто не меняются. Например, он часто используется для настройки статического текста из языковых файлов, так как выбор языка обычно производится один раз и не часто меняется [1].

3. Recyclerview и аналогичные элементы управления: в таких элементах управления, как `mvxrecyclerview`, одноразовые привязки могут вести себя не так, как ожидалось, из-за просмотра переработки. Когда пользователь прокручивается через список, представления перерабатываются и используются повторно, что может привести к повторному огню, что может привести к одноразовым привязкам, эффективно ведя себя как непрерывные привязки [4]. Это может привести к неожиданному поведению, если не управляется должным образом.

4. Соображения производительности: хотя одноразовые привязки не следят за изменениями, они по своей сути не вводят проблемы с производительностью. Однако, если он широко используется в сложных макетах или во многих привязках, начальная настройка может способствовать более медленному времени рендеринга пользовательского интерфейса по сравнению с другими режимами связывания [9].

5. Безопасность потока: привязки MVVMcross, включая одноразовые привязки, могут зависеть от проблем с потоком, если они не управляются должным образом. Например, если привязки выполняются в рабочем потоке, это может привести к неожиданному поведению, если только правильно синхронизируется с потоком пользовательского интерфейса [5] [3].

Таким образом, хотя одноразовое привязка полезно для статических данных, оно не идеально подходит для динамических данных или сценариев, где необходимы непрерывные обновления. Кроме того, его поведение в определенных компонентах пользовательского интерфейса, таких как «Recyclerview», требует тщательной обработки, чтобы избежать неожиданных повторений.

Цитаты:
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-data-bindings
[3] https://github.com/mvvmcross/mvvmcross/issues/1545
[4] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[5] https://www.mvvmcross.com/mvvmcross-4.2/
[6] https://github.com/mvvmcross/mvvmcross/issues/29
[7] https://stackoverflow.com/questions/17156368/
[8] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[9] https://github.com/mvvmcross/mvvmcross/issues/1342
[10] https://www.mvvmcross.com/mvvmcross-5-release/