2014-10-31 58 views
0

我正在開發Windows Phone應用程序,如果條件爲false,我需要將用戶重定向到另一個頁面。所以沒有按鈕使用。如何在不使用按鈕的情況下導航到另一個頁面?

我試圖用一個 「正常」 的編碼方式:

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 – 2014-10-31 11:10:56

+0

這一行:'NavigationService.Navigate(new Uri(「/ tuto.xaml」,UriKind.RelativeOrAbsolute));' – 2014-10-31 11:14:24

+0

在該行放置一個斷點,我的猜測是NavigationService爲null。當它中斷時,將鼠標懸停在其上以查看其值 – 2014-10-31 11:16:55

回答

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

但是如何在構造函數上調用此方法的正確模式? – 2014-10-31 12:26:58

+0

@ReneSá爲什麼你想在構造函數中首先執行此操作?這沒有什麼意義。當您立即在'OnNavigatedTo'中導航時,MainPage將不會出現。 – lisp 2014-10-31 12:29:23

+0

我明白。但我的疑問是如何在構造函數 – 2014-10-31 12:33:52

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 2014-11-03 11:39:55

相關問題