MVVMCross에서 View Presenter는 다른 플랫폼에서 ViewModels의 프레젠테이션을 관리하는 데 중요한 역할을합니다. 그러나 뷰 발표자가 제공하는 것 이상으로 프레젠테이션 논리를 사용자 정의 할 수있는 대안이나 방법을 찾고 있다면 다음은 다음과 같습니다.
1.보기 발표자 사용자 정의 **
서브 클래스를 서브 클래스하거나`imvxViewPresenter` 인터페이스를 구현하여 기존보기 발표자를 확장하거나 수정할 수 있습니다. 이를 통해 다양한 플랫폼에서 다양한 화면 크기 또는 방향을 처리하는 것과 같은 특정 요구 사항에 대한 프레젠테이션 논리를 조정할 수 있습니다 [1] [3]. 예를 들어, 휴대 전화와 태블릿에 뷰 모델을 다르게 표시 할 수 있습니다.2. 프리젠 테이션 힌트 사용 **
MVVMCross는 프레젠테이션 힌트 (`mvxPresentationHint`)라는 메커니즘을 제공하여 새로운 뷰 모델을 반드시 표시하지 않고 UI의 변경 사항을 요청할 수 있습니다. 뷰 모델을 닫거나 내비게이션 스택 수정과 같이 발표자에게 특정 작업을 신호하기 위해 사용자 정의 힌트를 만들 수 있습니다 [1] [3]. 이 접근법은 기본 발표자가 다루지 않는 복잡한 UI 상호 작용을 처리하는 데 유용합니다.3. 대체 MVVM 프레임 워크 **
MVVM 아키텍처에서 더 넓은 변화를 찾고 있다면 프레젠테이션 및 탐색에 대한 다양한 접근 방식을 제공하는 대체 프레임 워크를 고려할 수 있습니다. 인기있는 대안은 다음과 같습니다.-Prism : WPF, Xamarin Form 및 UNO 플랫폼에서 강력한 지원으로 유명한 Prism은 유지 보수 가능한 응용 프로그램을 구축하기위한 포괄적 인 프레임 워크를 제공합니다 [4].
- ReactiveUi :이 프레임 워크는 기능적 반응성 프로그래밍에 중점을 두어보다 추상적이고 테스트 가능한 UI 논리를 허용합니다 [4].
-Caliburn.micro : XAML 플랫폼에서 MV* 패턴을 지원하는 가벼운 프레임 워크로 코드 품질을 희생하지 않고 빠른 개발을 강조합니다 [4].
4. 사용자 정의 내비게이션 로직 **
View 발표자에만 의존하는 대신 응용 프로그램에서 직접 사용자 정의 내비게이션 로직을 구현할 수 있습니다. 여기에는 플랫폼 별 항법 API를 사용하거나 MVVMCross의 ViewModel-to-ViewModel Navigation 기능과 통합되는 사용자 정의 탐색 서비스를 작성하는 것이 포함될 수 있습니다 [6].5. 대화 및 비행 **
표준 내비게이션 흐름 외부에 컨텐츠를 표시 해야하는 시나리오의 경우 MVVMCross는 대화 상자 및 비행을 사용하여 지원합니다. 이들은 특정 프레젠테이션 요구에 맞게 사용자 정의 할 수 있으며 전통적인 페이지 기반 내비게이션에 대한 대안을 제공합니다 [9].요약하면, View Presseners는 MVVMCross의 강력한 도구이지만이를 사용자 정의하거나 확장하거나 동적 UI 변경에 대한 프레젠테이션 힌트를 사용하거나 대체 MVVM 프레임 워크 및 사용자 정의 내비게이션 접근법을 탐색하여 응용 프로그램에 대한 원하는 프레젠테이션 논리를 달성 할 수 있습니다.
인용 :[1] https://www.mvvmcross.com/documentation/fundamentals/view-presenters
[2] https://blog.ostebaronen.dk/2018/01/mvvmcross-binding-target.html
[3] https://gregshackles.com/presenters-in-mvvmcross-aprimer/
[4] https://dotnet.libhunt.com/mvvmcross-alternatives
[5] https://www.mvvmcross.com/documentation/advanced/custom-data-binding
[6] https://stackoverflow.com/questions/18735497/mvvmcross-navigation-on-screen
[7] https://stackoverflow.com/questions/22601018/what-are-the-altternatives of-module-presentermvp-design-pattern
[8] https://yanxiaodi.gitbook.io/xamarin-mvvmcross handbook/using-mvvmcross-to-create-your-first-xamarin-app/creating-the-ios-project/understanding-thata-binding-syntax
[9] https://www.mvvmcross.com/documentation/advanced/customizing-using-app-and-setup