2012-02-12 13 views
8

mój plik XAML plikbłędach: Pozycje kolekcja musi być pusty przed użyciem ItemsSource

<ListBox Height="522" HorizontalAlignment="Left" Margin="20,162,0,0" Name="listBox1" VerticalAlignment="Top" Width="448" ItemsSource="{Binding}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Text="{Binding Text}" Foreground="#FFC8AB14" FontSize="36" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

xaml.cs

 listBox1.Items.Clear(); 
     for (int i = 0; i < tasks.Count(); i++) { 
      List<Taskonlistbox> dataSource = new List<Taskonlistbox>(); 
      dataSource.Add(new Taskonlistbox() {Text = "Blalalalala"}); 
      this.listBox1.ItemsSource = dataSource; // visual stdio shows error here: 
     } 

Taskonlistbox:

public class Taskonlistbox 
{ 
    public string Text { get; set; } 
} 

Błąd: kolekcja „Rzeczy musi być pusty przed użyciem ItemsSource " jaki jest problem?

+1

to wydaje się związane z http://stackoverflow.com/questions/683863/wpf-items-collection-must -be-empty-before-using-itemssource – Chriseyre2000

+0

Prawdopodobnie nie jest to główny błąd, ale nie powinieneś ustawiać ItemsSource w pętli for. –

Odpowiedz

13

Chcesz utworzyć listę tylko raz i przypisz źródło danych tylko raz! Dlatego też utworzyć listę przed pętlę i przypisać źródło danych po pętlę

// Clear the listbox. 
// If you never add items with listBox1.Items.Add(item); you can drop this statement. 
listBox1.Items.Clear(); 

// Create the list once. 
List<Taskonlistbox> dataSource = new List<Taskonlistbox>(); 

// Loop through the tasks and add items to the list. 
for (int i = 0; i < tasks.Count(); i++) { 
    dataSource.Add(new Taskonlistbox {Text = "Blalalalala"}); 
} 

// Assign the list to the `ItemsSouce` of the listbox once. 
this.listBox1.ItemsSource = dataSource; 
+0

dziękuję bardzo! – tbsasa

Powiązane problemy