2013-08-18 1 views
3

내 응용 프로그램에 MVVM을 구현하기 시작했으며 사용자가보기로 언제 이동했는지 알 수있는 문제가 있습니다. WP MVVM Navigation OnNavigatedTO

이보기 사이를 이동하려면, 난 그냥 내가보기에 탐색 할 때 확인 방법은 무엇 navigationService.Navigate(...);

는 사용할 수 있습니까? navigationService.Navigated 이벤트를 사용할 수 있습니까?

페이지 자체가 제공하는 OnNavigatedTo처럼 사용할 수있는 다른 방법이 있습니까?

답변

0

감사합니다. 몇 사람이 만든 탐색 서비스의 사용자 지정 구현을 만들기로 결정하기 전까지 일정 기간 동안 두 가지 모두 도움이되었습니다. 나는 Cimbalino 툴킷에 이것을 제안하기 위해 기여했으며 잠시 후 소개되었습니다.

저는 제 개인적인 견해로 제 문제를 가장 잘 해결해줍니다. 거기에있는 탐색 서비스를보십시오. Navigated 이벤트는 내 문제를 거의 해결합니다.

https://github.com/Cimbalino/Cimbalino-Toolkit

그것은 기본적으로 (당신의 ViewModel에서)이 내려 온다 :

_navigationService.Navigated += OnNavigated; 
1

XAML :

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WP71" 

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 
DataContext="{Binding titleSearchViewModel, Source={StaticResource Locator}}"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger> 
      <cmd:EventToCommand Command="{Binding PageLoaded, Mode=OneWay}"/> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 

VM :

이 질문은, 내가이 솔루션을 여전히 실제 선호되는 경우
private RelayCommand _PageLoaded; 
public RelayCommand PageLoaded 
     { 
      get 
      { 
       if (_PageLoaded == null) 
       { 
        _PageLoaded = new RelayCommand(
            () => Loaded() 
         ); 
       } 
       return _PageLoaded; 
      } 
     } 
1

: http://www.geoffhudik.com/tech/2010/10/10/another-wp7-navigation-approach-with-mvvm.html

그것을 사용하는 경우, 보낼 수 보낸 사람 ViewModel의받는 사람 ViewModel의 매개 변수 :

수신기의 ViewModel에 다음

NavigatedToCommand="{Binding RefreshCommand}" 

을 그리고 :

그리고 수신기는 XAML에 정의해야합니다 제공하는 답변을

public ICommand RefreshCommand // Should be set as NavigatedToCommand="{Binding RefreshCommand}" in xaml 
{ 
    get { return new RelayCommand(Refresh); } 
} 

public void Refresh() 
{  
    _dataService.GetList(SelectedIndex, DownloadedCallback); // So, this would be called automatically after navigating is complete. SelectedIndex is updated at this moment. 
}