MVVMCross에서의 일회성 바인딩은 바인딩 소스가 설정 될 때 뷰 모델에서 뷰로 한 번만 값을 한 번만 전송하는 유용한 바인딩 모드입니다. ViewModel의 변경 사항을 적극적으로 모니터링하지 않으므로 초기 바인딩 후 ViewModel의 속성이 변경되는 경우보기를 업데이트하지 않습니다. 일회성 바인딩 사용에 대한 몇 가지 제한 사항과 고려 사항은 다음과 같습니다.
1. 연속 업데이트 없음 : 일회성 바인딩의 주요 제한은 뷰 모델의 변경에 따라 뷰를 지속적으로 업데이트하지 않는다는 것입니다. 이로 인해 UI에서 실시간으로 반영되어야하는 동적 데이터에 적합하지 않습니다.
2. 정적 데이터 : 일회성 바인딩은 자주 변경되지 않는 정적 또는 읽기 전용 데이터에 가장 잘 사용됩니다. 예를 들어, 언어 선택은 일반적으로 한 번 만들어지고 자주 변경되지 않기 때문에 언어 파일에서 정적 텍스트를 설정하는 데 종종 사용됩니다 [1].
3. RecyclerView 및 유사한 컨트롤 :`mvxrecyclerview '와 같은 컨트롤에서, 일회성 바인딩은 재활용보기로 인해 예상대로 작동하지 않을 수 있습니다. 사용자가 목록을 스크롤하면 뷰가 재활용되고 재사용되므로 일회성 바인딩이 다시 발사되어 연속적인 바인딩처럼 효과적으로 행동 할 수 있습니다 [4]. 제대로 관리하지 않으면 예기치 않은 동작으로 이어질 수 있습니다.
4. 성능 고려 사항 : 일회성 바인딩은 변경 사항을 모니터링하지 않지만 본질적으로 성능 문제를 도입하지 않습니다. 그러나 복잡한 레이아웃 또는 많은 바인딩에서 광범위하게 사용되는 경우 초기 설정은 다른 바인딩 모드에 비해 UI 렌더링 시간이 느리게 기여할 수 있습니다 [9].
5. 스레드 안전 : 일회성 바인딩을 포함한 MVVMCross 바인딩은 제대로 관리되지 않으면 스레딩 문제의 영향을받을 수 있습니다. 예를 들어, 작업자 스레드에서 바인딩이 실행되면 UI 스레드와 올바르게 동기화되지 않는 한 예상치 못한 동작으로 이어질 수 있습니다 [5] [3].
요약하면, 일회성 바인딩은 정적 데이터에 유용하지만 지속적인 업데이트가 필요한 동적 데이터 또는 시나리오에는 이상적이지 않습니다. 또한 'RecyclerView'와 같은 특정 UI 구성 요소에서의 동작은 예상치 못한 재조정을 피하기 위해 신중한 취급이 필요합니다.
인용 :[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://stackoverflow.com/questions/25460030/when-to-use-mvvmcross-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/