2014-10-31 4 views
0

Windows Phone 앱을 개발 중이며 조건이 거짓 인 경우 사용자를 다른 페이지로 리디렉션해야합니다. 따라서 버튼을 사용하지 않아도됩니다.버튼을 사용하지 않고 다른 페이지로 이동하는 방법은 무엇입니까?

public MainPage() 
    { 
     InitializeComponent(); 

if (iso.Contains("isoServer") == false) 
     { 
      iso["isoServer"] = "http://domain.com/appTerminalBD"; 
      NavigationService.Navigate(new Uri("/tuto.xaml", UriKind.RelativeOrAbsolute)); 
     } 
    } 

을하지만이 오류를 반환 :

나는 "정상적인"코드 방식을 사용하려고 해요

Object reference not set to an instance of an object.

+0

? 변수 중 하나가 null입니다. –

+0

다음 줄은 :'NavigationService.Navigate (new Uri ("/ tuto.xaml", UriKind.RelativeOrAbsolute)); ' –

+0

해당 줄에 중단 점을 넣으면 NavigationService가 null입니다. 그것이 깨지면, 그 값 위로 –

답변

1

NavigationService 탐색 한 후 설정 PhoneApplicationPage의 속성입니다.

public MainPage() 
{ 
    InitializeComponent(); 
} 

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    if (iso.Contains("isoServer") == false) 
    { 
     iso["isoServer"] = "http://domain.com/appTerminalBD"; 
     NavigationService.Navigate(new Uri("/tuto.xaml", UriKind.RelativeOrAbsolute)); 
    } 
} 
+0

그러나 올바른 모드가 생성자에서이 메서드를 호출하는 방법은 무엇입니까? –

+0

@ ReneSá 왜 처음부터 생성자에서이 작업을 수행 하시겠습니까? 그건별로 의미가 없습니다. 'OnNavigatedTo'에서 즉시 탐색하면 MainPage가 나타나지 않습니다. – lisp

+0

나는 이해한다. 하지만 의심의 여지가 생성자 에서이 메서드를 호출하는 방법입니다 –

0

나는 아래의 코드를 작성하고이 코드는 나를 위해 잘 작동 :

가에 예외를 던지고 라인
public MainPage() 
{ 
    InitializeComponent(); 

if (iso.Contains("isoServer") == false) 
    { 
     iso["isoServer"] = "http://domain.com/appTerminalBD"; 
     this.Loaded += (s, e) => 
      { 
       var ns = NavigationService; 
       ns.Navigate(new Uri("/tuto.xaml", UriKind.RelativeOrAbsolute)); 
      }; 
    } 
} 
+0

건설 중에 탐색 코드가 실행되지 않습니다! 그것은 건설 중'Loaded' 이벤트에만 연결됩니다. 그 후 오랫동안 실행됩니다. 실제로 OnNavigatedTo (OnNavigatedTo가 먼저 실행되고 나중에로드 됨)를 사용하여 코드보다 늦게 실행됩니다. – lisp

관련 문제