2011-08-17 3 views
0

Je suis en train de programmer une application pour Windows Phone 7, j'ai fait une page d'accueil avec une liste qui contient tous mes éléments qui sont les noms des autres pages. Donc, quand O touche un élément, je dois naviguer vers la page, mais quand je tape sur le téléphone me donne une erreur.Listbox Élément sélectionné dans Windows Phone 7

ceci est mon code:

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; 
      } 
     } 

Il me donne Sélectionnez une fonction, mais j'ai sélectionné un élément, ce sont les mêmes choses dans mon application. J'ai écrit ce code, car il n'y a pas des droits événements article listbox

+2

après l'erreur que vous obtenez. – Tejs

Répondre

3

Vous devez utiliser l'événement SelectionChanged de ListBox plutôt que la méthode que vous utilisez.

En XAML:

<ListBox SelectionChanged="ListBoxSelectionChanged" > 

     </ListBox> 

dans votre xaml.cs fichier:

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

merci willmel, j'ai résolu de changer SelectedItem avec SeletedIndex. – user899317

+0

Cool, vous devriez vérifier que vous voulez utiliser un bouton pour naviguer plutôt que la liste elle-même. Cliquer sur un article et naviguer instantanément sur la page est un paradigme beaucoup plus courant. –

1

Vous devez utiliser un contrôle Hyperlink de telle sorte que la page cible est déjà dans l'élément de liste. Vous pouvez également lier cela à une source de données dynamique.

Par exemple:

      <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> 
Questions connexes