0

MvvmCross 내에서 뷰 생성자에 뷰 모델을 삽입 할 수 있습니까?MvvmCross 및 뷰 생성자에 뷰 모델 삽입

내보기의 생성자는 다음과 같다 : 내가 수동으로 사용하여 다음 뷰 뷰 모델을 매핑 Setup.cs 클래스에서

public HomeView(IHomeViewModel viewModel) 
{ 
... 
} 

:

protected override void InitializeViewLookup() 
{ 
    IDictionary<Type, Type> lookups = new Dictionary<Type, Type> 
    { 
    {typeof(HomeViewModel), typeof(HomeView)} 
    }; 

    IMvxViewsContainer container = Mvx.Resolve<IMvxViewsContainer>(); 
    container.AddAll(lookups); 
} 

그리고 Setup.Initialize 방법 I IoC 컨테이너에 IHomeViewModel을 등록하십시오.

Mvx.RegisterType<IHomeViewModel, HomeViewModel>(); 

뷰가 렌더링하는 것처럼 보이지만 컨트롤이 보이지 않는 응용 프로그램. 게다가, 생성자 내부에 중단 점을두면 충돌이 발생하지 않습니다.

이것이 가능한지 궁금하거나 뷰 내부에 뷰 모델을 수동으로 만들어야합니까?

P. Windows Phone Universal 응용 프로그램을 만들고 있습니다.

답변

0

MvvmCross 내에서 뷰 생성자에 뷰 모델을 삽입 할 수 있습니까?

Windows의 경우보기를 구성하는 사람 (누가 프레임 어딘가에 있을까요?)을 작성한 다음 IoC 컨테이너를 사용하기 위해 재정의 할 수 있다면 가능합니다.

그러나 실제적인 관점에서 볼 때 가치가있는 것보다 많은 노력이 필요할 수 있습니다.

대신 :

  • 당신은 기본 MvvmCross의 ViewModel 건설/조회 메커니즘을 사용할 수 있습니다 - 당신이 발명 할 수
  • (다음 또한 탐색 매개 변수의 사용을 허용) OnNavigatedTo 동안 뷰 모델을 제공 자신의 서비스 공급자 조회 - 예 이 가능 아니면 수동으로 뷰의 내부 뷰 모델을 생성해야하는 경우

그래서 내가 궁금하네요 (또는 다른 곳에서)보기 생성자 중 Mvx.Resolve<T>를 사용하고 계십니까?

질문의이 부분에서 나는 무엇인가가 "잘못 가고있다"고 추측합니다. 그러나 그 질문에서 무엇이 무엇인지 알기가 어렵습니다. 디버깅을 시도하려면 디버그 추적을 확인할 수 있고 샘플 응용 프로그램과 비교할 수 있으며 코드를 단계별로 실행할 수 있습니다. 다른 모든 프로그램이 실패하면 매우 간단한 시작 프로그램으로 내려 가서 디버깅을 시도하십시오.

+0

생성자에 주입하는 것보다 더 많은 노력이 필요하다고 생각합니다. 뷰 모델이 탐색 항해의 일부로 전달됨을 인식하지 못했지만 문제를 해결합니다. 도와 주셔서 감사합니다. – MotoSV