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


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


MVVMCross에서, 일회성 결합 및 일원 결합은 다른 목적을 달성하는 두 가지 별개의 데이터 결합 모드입니다.

일회성 바인딩

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

일원 바인딩

반면에 일원 바인딩은 뷰 모델의 해당 속성이 변경 될 때마다 뷰를 지속적으로 업데이트합니다. 이는 ViewModel 속성의 변경 사항이 자동으로 View에 반영됨을 의미합니다. 그러나보기로 직접 변경되는 것은 뷰 모델에 영향을 미치지 않습니다. 일원 바인딩은 센서 데이터 또는 네트워크 피드와 같은 동적 소스에서 오는 데이터를 표시 할 때 유용합니다. 여기서 뷰는 최신 뷰 모델의 상태를 반영해야하지만 업데이트를 다시 보내지 않아도됩니다 [1].

주요 차이점

-업데이트 주파수 : 일회성 바인딩은 설정시 뷰를 한 번만 업데이트하는 반면, 단방향 바인딩은 뷰 모델이 변경 될 때마다 뷰를 지속적으로 업데이트합니다.
-모니터링 변경 : 일회성 바인딩은 초기 설정 후 뷰 모델의 변경 사항을 모니터링하지 않지만 단방향 바인딩은 뷰 모델의 변화에 ​​대해 적극적으로 듣습니다.
-사용 사례 : 일회성은 정적 또는 드물게 변화하는 데이터에 이상적이며, 일방 통행은 뷰 모델에 영향을 미치지 않고 사용자 상호 작용없이 실시간으로 표시 해야하는 동적 데이터에 더 적합합니다.

요약하면, 두 모드 모두 뷰 모델에서 뷰로 데이터를 전송하는 반면, 일회성 바인딩은 한 번만 그렇게하고 변경 사항을 모니터링하지는 않지만, 일원 바인딩은 뷰 모델 변경에 따라 뷰를 지속적으로 업데이트합니다.

인용 :
[1] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://stackoverflow.com/questions/41768962/mvvmcross-default-binding-mode-us-a-project
[4] https://www.mvvmcross.com/documentation/fundamentals/viewmodel-lifecycle
[5] https://learn.microsoft.com/en-us/dotnet/maui/fundamentals/data-binding/binding-mode?view=net-maui-9.0
[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://www.mvvmcross.com/documentation/advanced/custom-data-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://www.reddit.com/r/javascript/comments/v993r4/askjs_why_is_oneway_binding_better_than_twoway/