Ошибка: коллекция элементов должна быть пустой перед использованием ItemsSource - PullRequest
8 голосов
/ 12 февраля 2012

мой xaml-файл

<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 file

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

Ошибка : "Коллекция элементовдолжен быть пустым перед использованием ItemsSource "в чем проблема?

1 Ответ

13 голосов
/ 12 февраля 2012

Вы хотите создать список только один раз и назначить источник данных только один раз! Поэтому создайте список до цикла и назначьте источник данных после цикла

// 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...