Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 일회성 결합은 MVVMCross의 양방향 결합과 어떻게 다른가?


일회성 결합은 MVVMCross의 양방향 결합과 어떻게 다른가?


MVVMCross에서, 일회성 바인딩 및 양방향 바인딩은 뷰와 뷰 모델 사이의 상호 작용을 관리하는 데있어 독특한 목적을 제공합니다.

일회성 바인딩

일회성 바인딩은 바인딩 소스가 설정 될 때 뷰 모델에서 뷰로 한 번만 뷰로 데이터를 전송하는 데 사용됩니다. 이 초기 전달 후, 바인딩은 뷰 모델의 속성에 대한 변경 사항을 모니터링하지 않으며 바인딩 소스 자체가 재설정되지 않는 한 뷰를 업데이트하지 않습니다. 이 모드는 구성 가능하지만 설정 후 자주 변경되지 않는 필드에 유용합니다. 예를 들어, MVVMCross에서, 한 번의 바인딩은 언어 파일에서 정적 텍스트를 설정하는 데 사용됩니다. 사용자는 일반적으로 언어를 한 번 선택하고 나중에는 거의 변경하지 않습니다 [1] [10].

양방향 바인딩

반면에 양방향 바인딩은 뷰와 뷰 모델 사이의 연속적이고 양방향 연결을 설정합니다. 뷰 또는 뷰 모델 트리거 업데이트의 변경 사항이 변경됩니다. 이 모드는 사용자의 입력 및 뷰 모델의 변경 사항이 실시간으로 반영되어야하는 양식 작성과 같은 기존 데이터를 편집 할 때 특히 유용합니다. 양방향 바인딩은 MVVMCross에서 일반적으로 사용되며 종종 새로운 바인딩의 기본 모드 역할을합니다 [1] [2].

주요 차이점

-데이터 흐름의 방향 : 일회성 바인딩은 뷰 모델에서 뷰를 한 번만 업데이트하는 반면 양방향 바인딩은 뷰와 뷰 모델을 지속적으로 업데이트합니다.
-모니터링 변경 : 일회성 바인딩은 초기 업데이트 후에 변경 사항을 모니터링하지 않으며 양방향 바인딩은 지속적으로 모니터링하고 양쪽 끝을 업데이트합니다.
-사용 사례 : 일회성은 정적 또는 드물게 변화하는 데이터에 이상적이며, 두 방향은 대화식 형태 또는 동적 데이터 교환에 더 적합합니다.

요약하면, 일회성 바인딩은 정적 또는 초기 데이터 설정에 사용되는 반면, 양방향 바인딩은 뷰와 뷰 모델이 서로의 실시간 변경을 반영 해야하는 대화식 시나리오에 사용됩니다.

인용 :
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[4] https://softwareengineering.stackexchange.com/questions/322450/how-does-two-way-data-binding-differ-from-simple-auto-sync
[5] https://stackoverflow.com/questions/17156368/
[6] https://yanxiaodi.gitbook.io/xamarin-mvvmcross handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-endroid-project/understanding-thata-binding-syntax
[7] https://stackoverflow.com/questions/13504906/what-is-is-two-way-binding
[8] https://github.com/mvvmcross/mvvmcross/issues/29
[9] https://stackoverflow.com/questions/27803448/data-binding-one-vs-two-way
[10] https://stackoverflow.com/questions/48910503/binding-mode-onetime-in-mvxrecyclerview
[11] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[12] https://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/