2013-05-13 2 views
5

에 나는 안드로이드 구현을위한 WPF와 모노를 지원하기 위해 MvvmCross를 사용하는 리팩토링하고 싶은 WPF MVVM 응용 프로그램이 있습니다.복합 뷰는 MvvmCross

  • 항상
  • 탐색 모음 지역
  • 메인 뷰 지역
  • 팝업 윈도우 영역

각각 볼 수있는 도구 모음 :

우리의 응용 프로그램의 전망

의 구성 이러한 영역의 주 응용 프로그램 창에서 UserControl 및 UiService 단순히 각 영역의보기를 바꿉니다. 팝업 창의 경우 UiService에 대한 호출 표시 또는 숨김시 가시성이 변경되는 주 윈도우의 UserControl도 마찬가지입니다. 또한 UiService는 상태 정보가 뷰 모델로 전달되어 표시되도록하는 컨텍스트 매개 변수를 허용합니다.

기본보기는 일반적으로 여러 하위보기의 합성입니다. 이러한 경우 기본보기 모델은 속성으로 표시되는 하위보기 모델을 만듭니다. 메인 뷰는 이러한 속성을 자식 뷰의 데이터 컨텍스트로 설정합니다.

내가 MvvmCross 확실히이 스타일 복합 뷰를 지원한다고 생각하지만, 나는 그런의 예를 찾을 수 없습니다. 관련 MvvmCross 예제가 있습니까? MvvmCross에서 구현할 때 권장되는 접근 방법은 무엇입니까?

답변

6

나는 MvvmCross가 확실히이 스타일의 합성보기를 지원한다고 생각 하겠지만, 그런 예를 찾을 수는 없습니다. 관련 MvvmCross 예제가 있습니까? MvvmCross에서 구현할 때 권장되는 접근 방법은 무엇입니까?

이 스타일의보기는 모바일 앱의 기본 스타일이 아닙니다. 대부분의 모바일 앱은 페이지 기반입니다.

그러나 태블릿 앱에서는 복합보기가 점차 보편화되고 있습니다. 심지어 모바일 앱에도 예외가 있습니다. 탭, 파노라마, 플라이 아웃 등

각기 다른 종류의 디스플레이를 허용하기 위해 각 MvvmCross UI 플랫폼은 사용자가 필요에 따라 사용자 정의 할 수있는 presenter을 제공합니다. 당신이 당신의 ViewModels 및 뷰를 제공하는 방법을 선택할 수있는

presenter 클래스입니다. 또한 C# 클래스이기 때문에이 책임을 원하는만큼 많은 다른 객체에 위임 할 수 있으므로 패널, 플라이 아웃, 탭, 내장 된 네비게이션 스택 등의 복잡한 패턴을 작성할 수 있습니다.

당신이 어떤 2 ​​ViewModels를 표시 할 수 있음을 기억 https://github.com/slodge/MvvmCross-Tutorials/tree/master/Sample%20-%20TwitterSearch

+0

그냥 메모 ... 샘플에 사용 된 Twitter API가 더 이상 사용되지 않습니다. - TwitterSearch'Twitter REST API v1은 더 이상 활성화되지 않았습니다. API v1.1로 이전하십시오. https : // dev.twitter.com/docs/api/1.1/overview.' – Syska

2

-https://speakerdeck.com/cirrious/presenters-in-mvvmcross

WPF 및 iOS TwitterSearch 예는 이것에 시작하는 좋은 장소가 될 수있다 -이에 대한 정보, 몇 가지 샘플에 대한 링크를 포함하여,이 슬라이드 데크를 참조 주어진 명령. 예를 들어

, 사용자는 복합 UI가 다음 탐색 모음보기 모델과 기본보기 모델을 표시로드 할 로그인 형태를 완료합니다.

그러면 사용자 정의 표현자를 생성하여 해당보기의 레이아웃을 전달할 수 있습니다.

이것은 간단하게 들리지만, 알아내는 데는 시간이 걸립니다. 스튜어트가 언급 한 TwitterSearch 튜토리얼에서 설명한 솔루션

2

여러 개의 ViewModel을 UserControls와 동일한 페이지에 표시 할 수 있도록 사용자 정의 표현자를 사용하는 플러그인을 만들었습니다. 또한 평소보기 탐색을 허용, 그래서 당신은 WPF, Andoid 정제, 윈도우 스토어 iPad에서 복합 견해를 가지고 정확한 뷰 모델을 사용할 수 있습니다 및 모바일 기기에서 페이지 탐색 :

https://github.com/ChristianRuiz/MvvmCross-ControlsNavigation