2012-12-13 18 views
0

我正在開發一個小型遊戲類型的應用程序,當用戶贏得遊戲時,他將獲得彈出窗口作爲勝利,我寫了下面的代碼。如何從彈出頁面移動到Windows Phone應用程序中的其他頁面

public void stoptimer() 
{ 

     if ((Convert.ToString(b1.Content) == "1") && (Convert.ToString(b2.Content) == "2") && (Convert.ToString(b3.Content) == "3") && (Convert.ToString(b4.Content) == "4") && (Convert.ToString(b5.Content) == "5") && (Convert.ToString(b6.Content) == "6") && (Convert.ToString(b7.Content) == "7") && (Convert.ToString(b8.Content) == "8") && (Convert.ToString(b9.Content) == "9") && (Convert.ToString(b10.Content) == "10") && (Convert.ToString(b11.Content) == "11") && (Convert.ToString(b12.Content) == "12") && (Convert.ToString(b13.Content) == "13") && (Convert.ToString(b14.Content) == "14")) 

     { 
      newTimer.Stop(); 
      time = txtClock.Text; 
      //textBox2.Text = txtClock.Text; 
      Popup buyNowScreen; 
      buyNowScreen = new Popup(); 
      buyNowScreen.Child = 
       new popupscreen 
        (); 
      buyNowScreen.IsOpen = true; 
      buyNowScreen.VerticalOffset = 100; 
      buyNowScreen.HorizontalOffset = 25; 

     } 
     } 

而且我編寫了下面的代碼,用於從彈出頁面導航到其他頁面,但它無法獲取NullReferenceException。

private void button3_Click(object sender, RoutedEventArgs e) 
    { 

     ClosePopup(); 
     NavigationService.Navigate(new Uri("/Menu.xaml", UriKind.Relative)); 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     ClosePopup(); 

     NavigationService.Navigate(new Uri("/NumericEasy.xaml", UriKind.Relative)); 

    } 


    private void ClosePopup() 
    { 
     Popup buyPop = this.Parent as Popup; 
     if (buyPop.IsOpen) 
     { 
      buyPop.IsOpen = false; 


     } 

    } 

回答

1

以下是將事件提供給彈出頁面控件的過程。

Popup buyNowScreen=new Popup(); 

    popupscreen popup1=new popscreen(); 
    buyNowScreen.Child =popup1; 
    buyNowScreen.isOpen=true; 
    popup1.button1.click+= new RoutedEventHandler(btn_playagain_click); 
    private void btn_playagain_click(object sender, EventArgs e) 
    { 
     p.IsOpen = false; 
     NavigationService.Navigate(new Uri("/NumericEasy.xaml?Refresh=true", UriKind.Relative)); 
    } 
1

導航服務在頁面之間工作,你不能使用彈出如此簡單。該服務找不到,要使用哪個頁面,這就是爲什麼它拋出異常。

解決你的問題,你應該這樣做:

彈出類

1)在你的彈出式的構造函數,你應該得到的PhoneApplicationPage對象。

 private PhoneApplicationPage _page; 

     public SomePopup(PhoneApplicationPage page) 
      { 
      _page = page; 

2)您應該爲點擊事件創建一個新類型。

 public delegate void NavigateHandler(object sender, EventArgs e, PhoneApplicationPage page); 

     public event NavigateHandler NavigateFromPopup; 

3)在你的button_click事件中,你應該把它叫做:

public void ButtonX_Click(object sender, RoutedEventArgs e) 
     { 
       if (NavigateFromPopup!= null) 
       NavigateFromPopup(this, EventArgs.Empty, _page); 
     } 

你的頁面類

4)在你的頁面,當你創建一個彈出窗口,您應該添加這個eventHandler:

  SomePopup p = new SomePopup(this); 
      p.NavigateFromPopup +=new SomePopup.NavigateHandler(p_NavigateFromPopup); 

5)最後,在你的頁面,你應該記下這個事件:

private void p_NavigateFromPopup(object sender, EventArgs e, PhoneApplicationPage page) 
     { 
      page.NavigationService.Navigate(new Uri("...", UriKind.RelativeOrAbsolute)); 
     } 

這應該工作。

相關問題