2011-01-03 16 views
1

Ich entwickle Windows Phone 7 Anwendung. Ich bin neu im Silverlight. Ich versuche, eine Liste von Zeichenfolgen an Listbox zu binden. Ich verwende den folgenden CodeWie binden Sie Daten dynamisch an ListBox Control?

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

Meine XAML den folgenden Code

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

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

Mit dem obigen Code enthält meine Listbox keine Artikel zur Laufzeit zeigt. Mein Emulator zeigt in der Listbox nichts an. Was ist falsch in meinem Code? Können Sie mir bitte einen Code oder einen Link für das oben genannte Problem zur Verfügung stellen, damit ich das oben genannte Problem lösen kann? Wenn ich irgendetwas falsch mache, dann führe mich bitte.

Antwort

2

Sie haben der Datenvorlage nicht mitgeteilt, das Element anzuzeigen. In diesem einfachen Fall der Anzeige von Strings, wenn Sie nur die gesamte ListBox.ItemTemplate von Ihrem XAML löschen, wird es anfangen zu arbeiten.

Für akademische Gründe könnten Sie verwenden: -

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

Dies bindet die Text Eigenschaft eines TextBlock zu einem Element aus der Itemssource.

0

Wenn Sie Ihre Objekte horizontal statt vertikal anzeigen möchten (wie es aussieht, als ob Sie versuchen, dies zu tun), sollten Sie ItemsPanelTemplate anstelle von DataTemplate ersetzen.

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

Das ist ein guter Ruf, dass in der Tat Shailesh wahrscheinlich nach 'ItemsPanelTemplate' -Eigenschaft sucht. Es ist jedoch nicht notwendig und auch nicht möglich, die Eigenschaft 'IsItemsHost' zu setzen (sie ist schreibgeschützt). Außerdem wäre es besser, das "VirtualizingStackPanel" (wie es standardmäßig verwendet wird) mit der Ausrichtung "Horizontal" zu verwenden. – AnthonyWJones

+0

Hoppla, habe den IsItemsHost aus meinem WPF-Code [Removed] gezogen. Guter Punkt mit VirtualizingStackPanel. – NotDan

Verwandte Themen