2011-01-03 2 views
1

Je développe l'application de Windows Phone 7. Je suis nouveau à la Silverlight. J'essaie de lier une liste de chaînes à Listbox. J'utilise le code suivantComment lier dynamiquement des données à ListBox Control?

ObservableCollection<String> abc = new ObservableCollection<String>(); 
      abc.Add("XYZ"); 
      IncomeSummaryListBox.ItemsSource = abc; 

Mon XAML contient le code suivant

<ListBox Margin="16,217,6,275" Name="IncomeSummaryListBox"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Horizontal"> 

         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

Avec le code ci-dessus mon listbox montre aucun élément lors de l'exécution. Mon périphérique d'émulation n'affiche rien dans la liste. Quel est le problème dans mon code? Pouvez-vous s'il vous plaît me fournir tout code ou lien pour le problème ci-dessus afin que je puisse résoudre le problème ci-dessus? Si je fais quelque chose de mal alors s'il vous plaît me guider.

Répondre

2

Vous n'avez pas réellement indiqué le modèle de données pour afficher l'élément. Dans ce cas simple d'affichage des chaînes si vous supprimez tout le ListBox.ItemTemplate de votre xaml, il commencera à fonctionner.

Pour des raisons académiques, vous pouvez utiliser: -

<ListBox Margin="16,217,6,275" Name="IncomeSummaryListBox"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding}" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Cela lie la propriété Text d'un TextBlock à un élément de la ItemsSource.

0

Si vous souhaitez afficher vos éléments horizontalement plutôt que verticalement (comme vous semblez vouloir le faire), vous devez remplacer ItemsPanelTemplate au lieu de DataTemplate.

<ListBox Margin="16,217,6,275" Name="IncomeSummaryListBox"> 
    <ListBox.ItemsPanelTemplate > 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
    </ItemsPanelTemplate> 
    </ListBox.ItemsPanelTemplate > 
</ListBox> 
+0

C'est un bon appel que Shailesh recherche probablement la propriété 'ItemsPanelTemplate'. Cependant, il n'est pas nécessaire ni possible de définir la propriété 'IsItemsHost' (itsononly). De même, il serait préférable d'utiliser 'VirtualizingStackPanel' (comme c'est le cas par défaut) avec Orientation sur Horizontal. – AnthonyWJones

+0

Oups, tiré le IsItemsHost de certains de mon code WPF [Supprimé]. Bon point avec VirtualizingStackPanel. – NotDan

Questions connexes