2011-08-17 85 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> 
相关问题