2014-11-10 5 views
0

MVVM Light V5를 사용하여 WinRT 응용 프로그램을 개발 중입니다. 페이지에서 다른 페이지로 이동하여 객체를 전달하고 싶습니다. 나는의 GridView를하고 난 클릭 한 항목을 잡으려면, 그래서이 수행하는 RelayCommand 작성 :WinRT 및 MVVM Light V5 NavigationService

private void ItemClickExecute(ItemClickEventArgs e) 
    { 
     navigationService.NavigateTo("AnotherPage", e.ClickedItem as MyObject);   
    } 

이 작동하고 벌금을. 내 문제는 "AnotherPage"ViewModel에서이 개체를 가져 오는 것입니다. 어떻게해야합니까?

답변

0

죄송합니다.이 답변에 늦었 습니다만 도움이 되었기를 바랍니다.

탐색 할 페이지에 대한 ViewModel을 만들어서 DataContext로 설정해야합니다. 그런 다음 해당 뷰 모델에서 MyObject 속성을 만듭니다.

그런 다음 탐색 할 페이지의 OnNavigatedTo 이벤트를 재정의하십시오.

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     var vm = (SecondPageViewModel)this.DataContext; 
     if (vm!=null) 
     { 
      var temp = e.Parameter as MyObject; 
      if (temp != null) 
      { 
       vm.MyObjectProperty = temp; 
      } 
     } 
    } 

이렇게해야합니다.

더 복잡하고 (더 많은 mvvm을 준수하는) 답변이 있지만 그게 효과가 있습니다.