2013-06-10 2 views
1

나는 이것을 할 올바른 방법을 찾기 위해 애 쓰고 있습니다. 나는 MyViewModel의 관측 가능한 콜렉션을 가지고있는 MyCollectionViewModel을 가지고 있습니다. 나는 이것을보기 MyCollectionView에 바인딩하고 OpenMyViewCommand이라고하는 MyCollectionViewModel의 명령에 다시 바인딩 된 항목을 선택했습니다. 지금까지 너무 좋은 :선택된 ViewModel에 대한보기 열기

private MvxCommand<MyViewModel> _openMyViewCommand; 
    public ICommand OpenMyViewCommand 
    { 
     get { 
      _openMyViewCommand= _openMyViewCommand?? new MvxCommand<MyViewModel>(OpenMyView); 
      return _openSubViewCommand; 
     } 
    } 

지금 내 목록에있는 항목 중 하나는 명령을 발사하고 방법을 선택한 MyViewModel을 통과하는 방법 OpenMyView를 호출 볼 터치 할 때. 이제 문제는 내가 시도한 결과에 상관없이 ShowViewModel에 선택된 모델의보기를 표시하는 것일 수 있다는 것입니다. 물론 그렇지 않습니다,

private void OpenMyView(MyViewModel item) { 
       ShowViewModel<MyViewModel > (item); 
    } 

그러나 : 나는 여러 가지를 시도했지만,이 같은 정말 간단 직관적으로, 내가 기대 한 것 인 무엇인가가 작동 할 수 있습니다. 다음과 같은 오류가 발생합니다.

013-06-10 10:46:05.849 MyAppIPhoneUI[51198:c07] mvx: Warning: 5.83 Problem creating viewModel of type MyViewModel - problem MvxException: Failed to resolve parameter for parameter model of type MyModel when creating MyApp.Core.MyViewModel 
at Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.GetIoCParameterValues (System.Type type, System.Reflection.ConstructorInfo firstConstructor) [0x00042] in /MvvmCross-3/CrossCore/Cirrious.CrossCore/IoC/MvxSimpleIoCContainer.cs:377 
at Cirrious.CrossCore.IoC.MvxSimpleIoCContainer.IoCConstruct (System.Type type) [0x00030] in /MvvmCross-3/CrossCore/Cirrious.CrossCore/IoC/MvxSimpleIoCContainer.cs:266 
at Cirrious.CrossCore.Mvx.IocConstruct (System.Type t) [0x00006] in /MvvmCross-3/CrossCore/Cirrious.CrossCore/Mvx.cs:115 
at Cirrious.MvvmCross.ViewModels.MvxDefaultViewModelLocator.TryLoad (System.Type viewModelType, IMvxBundle parameterValues, IMvxBundle savedState, IMvxViewModel& viewModel) [0x00004] in /MvvmCross-3/Cirrious/Cirrious.MvvmCross/ViewModels/MvxDefaultViewModelLocator.cs:27 

013-06-10 10:24:11.330 MyAppIPhoneUI[50878:c07] mvx: Warning: 6.87 Exception masked MvxException: Failed to load ViewModel for type MyApp.Core.MyViewModel from locator MvxDefaultViewModelLocator 
    at Cirrious.MvvmCross.ViewModels.MvxViewModelLoader.LoadViewModel (Cirrious.MvvmCross.ViewModels.MvxViewModelRequest request, IMvxBundle savedState, IMvxViewModelLocator viewModelLocator) [0x00023] in /MvxViewModelLoader.cs:46 

여기에 무슨 일이 일어 났는지 생각해보십시오. MyView 클래스가 MvxViewController에서 상속되지만로드되지 않습니다.

답변

1

네비게이션 안드로이드 등의 작업을 통해 이루어집니다 Intent의 및 WindowsPhone과 Uri의 - 그래서 직렬화 유형을 통해 수행해야합니다 - 참조 :

코드를 다음과 같이 변경하십시오 :

수신 MyViewModel 등으로 17,451,515,
ShowViewModel<MyViewModel>(new { id = item.Id }); 

:

public void Init(int id) 
    { 
    MyItem = myItemLookupService.Lookup(id);  
    } 

는 또한 앱의 수명주기를 통해 아주 작은 제어 할 수 있습니다 명심하십시오 - 그것은 어느 순간에 '삭제 표시'얻을 수 있습니다. 따라서 MyViewModel이 탐색 요청을 받기 때문에 그 요청에 대한 항목은 항상 메모리에 저장되므로 예상하지 마십시오. 다시 작성하거나 다시 가져와야 할 수 있습니다.

+0

감사합니다. 스튜어트. 나는 collect-a-bull 파트 4와 비슷한 방식으로 다시 만들었지 만 제대로 작동하는 것처럼 보입니다.하지만 먼 길을가는 것처럼 보입니다. 그러나 라이프 사이클에 대한 귀하의 요점은 제가 좀 더 많은 것을 읽어야 할 필요가 있다고 생각합니다. –

관련 문제