Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MVVMCross의 구속력


MVVMCross의 구속력


MVVMCross의 바인딩을위한 공개 속성을 노출시키는 것은 뷰와 뷰 모델 사이의 효과적인 데이터 바인딩에 중요합니다. 다음은 다음과 같은 모범 사례입니다.

바인딩 개념 이해

MVVMCross에서, 바인딩은보기 모델의 소스 속성을보기의 대상 특성에 연결하는 것입니다. 소스는 일반적으로 뷰 모델의 공공 재산이며, 대상은 [1]에 바인딩하려는 관점에서 공공 재산입니다.

공개 속성

MVVMCross에서 부동산을 묶을 수 있으려면 공개되어야합니다. 이것은보기 모델과보기에 모두 적용됩니다. 사용자 정의보기 또는 컨트롤을 사용하는 경우 묶을 속성이 공개되어 있는지 확인하십시오 [1] [2].

inotifyPropertyChanged 구현

View 모델에서 특성이 변경 될 때 바인딩 엔진에 알리기 위해 InotifyPropertyChanged를 구현하십시오. MVVMCross는이 프로세스를 단순화하기 위해`mvxViewModel '에서'setProperty '와 같은 도우미 방법을 제공합니다. 이것은보기 모델의 변화가보기 [4]에 반영되도록한다.

사용자 정의 대상 바인딩

Twoway 모드에서 속성을 바인딩하거나 사용자 정의 시나리오를 처리 해야하는 경우 사용자 정의 대상 바인딩을 만들어야 할 수도 있습니다. 여기에는 속성 값을 설정하는 방법과 변경 사항을 듣는 방법을 정의하는 것이 포함됩니다. `mvxpropertyinfotargetbinding` 또는`mvxwitheventPropertyInfotargetBinding`과 같은 기본 클래스를 사용하여 프로세스를 단순화 할 수 있습니다 [2].

목표 바인딩 등록

사용자 정의 targetbinding을 작성한 후`fillTargetFactories '를 재정의하여`setup.cs'파일에 등록해야합니다. 이를 통해 MVVMCross는 사용자 정의 바인딩을 처리하는 방법을 알고 있습니다 [2].

유창한 바인딩

MVVMCross는 유창한 바인딩을 지원하여 코드의 바인딩을 정의 할 수 있습니다. 유창한 바인딩을 사용할 때, 대상이 원하는 속성에 결합하거나 원하는 속성을 공개로 노출하려는 실제 뷰인지 확인하십시오 [1].

중첩 속성

MVVMCross는 중첩 특성에 대한 바인딩을 지원합니다. 예를 들어, 하위 뷰 모델의 속성에 바인딩 할 수 있습니다. 하위 뷰 모델이 'InotifyPropertyChanged`를 구현하고 바인딩 경로가 올바르게 지정되어 있는지 확인하십시오 [5].

바인딩 디버깅

바인딩이 예상대로 작동하지 않으면`mvxbindingtrace`를 사용하여 바인딩 트레이스 레벨을 높이십시오. 이것은 결합 작업에 대한 상세한 출력을 제공하여 문제를 식별하는 데 도움이 될 수 있습니다 [5].

이러한 모범 사례를 따르면 MVVMCross의 공개 속성을 효과적으로 노출시키고 바인딩하여 강력하고 유지 관리 가능한 MVVM 응용 프로그램을 보장 할 수 있습니다.

인용 :
[1] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[2] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[3] https://stackoverflow.com/questions/79082019/what-is-best-practice-to-bind-bind--properties-an-a-user-control-in
[4] https://www.mvvmcross.com/documentation/fundamentals/data-binding
[5] https://stackoverflow.com/questions/20986140/binding-sub-properties-mvvmcross
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2014/august/windows-phone-build-mvvm-apps-with-xamarin-and-mvvmcross
[7] https://stackoverflow.com/questions/10700445/in-mvvmcross-how-do-do-bind-properties
[8] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup