2011-08-17 72 views
0

我正在爲Windows Phone 7編程一個應用程序,我製作了一個包含所有其他頁面名稱的所有項目的列表框的主頁。 所以,當點擊一個項目,我應該導航到頁面,但是當我點擊手機給我一個錯誤。列表框在Windows Phone 7中選擇的項目

這是我的代碼:

private void NavigateToPages_Click(object sender, EventArgs e) 
    { 
     if (listBox1.SelectedItem == null) {} 
     else 
     { 
      string uri = listBox1.SelectedItem.ToString(); 

      switch (uri) 
      { 
       case "Quadratic Eq.": 
        Navigate("/Pages/EQ.xaml"); 
        break; 
       case "Average": 
        Navigate("/Pages/Average.xaml"); 
        break; 
       case "Pythagoras": 
        Navigate("/Pages/pythagoras.xaml"); 
        break; 
       case "Trigonometry": 
        Navigate("/Pages/Trigon.xaml"); 
        break; 
       case "Percentage": 
        Navigate("/Pages/Percentoff.xaml"); 
        break; 
       case "Prime Number": 
        Navigate("/Pages/prime.xaml"); 
        break; 
       case "Factorize": 
        Navigate("/Pages/Factorize.xaml"); 
        break; 
       case "GCD & LCD": 
        Navigate("/Pages/GG.xaml"); 
        break; 
       default: 
        MessageBox.Show("Select a function!"); 
        break; 
      } 
     } 

它給了我選擇的功能,但我選擇了一個項目,這是同樣的事情在我的應用程序。 我寫了這段代碼,因爲沒有權利事件列表框項目

+2

後你所得到的錯誤。 – Tejs

回答

3

您應該使用ListBoxSelectionChanged事件而不是您正在使用的方法。

在XAML:

<ListBox SelectionChanged="ListBoxSelectionChanged" > 

     </ListBox> 

在xaml.cs文件:

private void ListBoxSelectionChanged(object sender, SelectionChangedEventArgs e) 
      { 
       ListBox lb = ((ListBox) sender); 
       if (lb.SelectedIndex == -1) 
        return; 

string uri = lb.SelectedItem.ToString(); 

      switch (uri) 
      { 
       case "Quadratic Eq.": 
        Navigate("/Pages/EQ.xaml"); 
        break; 
       case "Average": 
        Navigate("/Pages/Average.xaml"); 
        break; 
       case "Pythagoras": 
        Navigate("/Pages/pythagoras.xaml"); 
        break; 
       case "Trigonometry": 
        Navigate("/Pages/Trigon.xaml"); 
        break; 
       case "Percentage": 
        Navigate("/Pages/Percentoff.xaml"); 
        break; 
       case "Prime Number": 
        Navigate("/Pages/prime.xaml"); 
        break; 
       case "Factorize": 
        Navigate("/Pages/Factorize.xaml"); 
        break; 
       case "GCD & LCD": 
        Navigate("/Pages/GG.xaml"); 
        break; 
       default: 
        MessageBox.Show("Select a function!"); 
        break; 
      } 


       lb.SelectedIndex = -1; 
      } 
+0

willmel謝謝你,我已經解決了用SeletedIndex更改SelectedItem。 – user899317

+0

很酷,你應該驗證你想要使用一個按鈕來導航,而不是列表本身。點擊一個項目,然後立即導航到頁面是一個更常見的範例。 –

1

,以便目標頁面已經在列表中的項目,您應該使用一個超鏈接控制。 您也可以將其綁定到動態數據源。

例如:

      <HyperlinkButton NavigateUri="/Factorize.xaml" 
             Style="{StaticResource HyperlinkEmptyStyle}" 
             DataContext="{Binding}"> 
          <localControls:HeaderedContentControl Style="{StaticResource MultilineHyperlinkStyle}" 
                    Header="{Binding Resources.menu_01}" 
                    Content="{Binding Resources.menu_02}"/> 
         </HyperlinkButton> 
相關問題