MVVMcross обрабатывает обновления при использовании единовременного привязки путем переноса данных из ViewModel в представление только один раз, когда исходный источник связывания первоначально установлен. После этой первоначальной передачи привязка не активно отслеживает изменения изменения или события с ViewModel. Следовательно, любые последующие изменения в собственности ViewModel не будут отражены в представлении, если только сам источник связывания не будет сброшен или повторно повторно.
Ключевые моменты единовременного привязки в MVVMcross:
1. Начальная передача данных: привязки передают данные из ViewModel в представление при первом установке привязки. Обычно это полезно для настраиваемых полей, но не меняется часто после того, как они были установлены.
2. Без постоянного мониторинга: в отличие от двусторонних или односторонних привязков, одноразовые привязки не постоянно не контролируют ViewModel для изменений. Это означает, что если свойство ViewModel изменяется после начальной привязки, представление не будет обновляться автоматически.
3. Примеры использования: одноразовое привязка обычно используется в сценариях, где данные являются статичными или редко изменяются, например, настройка статического текста из языковых файлов. После выбора языка пользователь редко меняет его, делая единовременную привязку подходящей для таких случаев [1].
4. Сброс источника связывания: если источник связывания сброшен или повторно повторно, одноразовое привязка снова перенесет новые данные из ViewModel в представление. Однако это требует явного действия для сброса источника связывания.
5. Ограничения в динамических представлениях: в динамических представлениях, таких как те, которые используют `mvxrecyclerview`, одноразовые привязки могут не вести себя, как и ожидалось, если взгляды переработаны. В таких случаях связывание может быть переоценено по мере повторного использования взглядов, что может привести к неожиданному поведению [6].
Таким образом, единовременная привязка MVVMcross предназначена для сценариев, в которых данные устанавливаются один раз и не должны быть динамически обновляться. Он упрощает инфраструктуру привязки, избегая непрерывного мониторинга ViewModel для изменений, но требуется ручное вмешательство для обновления представления, если данные ViewModel изменятся после начального привязки.
Цитаты:[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://www.mvvmcross.com/documentation/fundamentals/dependency-nection
[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-property-in-viewm
[5] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[6] https://stackoverflow.com/questions/48910503/binding-dode-onetime-in-mvxrecyclerview
[7] https://github.com/mvvmcross/mvvmcross/issues/87
[8] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/march/async-programming-patterns-for-asynchronous-mvvm-applications-data-binding
[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