Операция недействительна, пока используется ItemsSource. Доступ и изменение элементов с помощью ItemsControl.ItemsSource вместо этого

Я новичок в Binding и WPF, недавно я узнал, как создать listBoxс несколькими столбцами, используя технологию Binding

 <ListView ItemsSource="{Binding Items}" Margin="306,70,22,17" MouseDoubleClick="listBoxSS_MouseDoubleClick" Name="listBoxSS" >           
    <ListView.View>
            <GridView>
                <GridView.Columns>
                    <GridViewColumn Header="first_name " Width="100" DisplayMemberBinding="{Binding Path=First_name}" />
                    <GridViewColumn Header="last_name" Width="100" DisplayMemberBinding="{Binding Path=Last_name}" />
                    <GridViewColumn Header="phone_number" Width="100" DisplayMemberBinding="{Binding Path=Phones[0]}" />
                    <GridViewColumn Header="notes" Width="100" DisplayMemberBinding="{Binding Path=Notes}" />
                </GridView.Columns>
            </GridView>
        </ListView.View>
    </ListView>

. а это код:

List<Student> arr = search.students();
        listBoxSS.ItemsSource = arr;

но проблема была, когда я пытался использовать добавить или удалить элемент или очистить

 listBoxSS.Items.Clear();

Пожалуйста, мне нужен пример использования источника элементов или способа, которым я могу ДОБАВИТЬ или удалить элемент или очистить список.

РЕДАКТИРОВАТЬ:

<ListView ItemsSource="{Binding Items}" Margin="306,70,22,17" MouseDoubleClick="listBoxSS_MouseDoubleClick" Name="listBoxSS" >
    <ListView.View>
        <GridView>
            <GridView.Columns>
                <GridViewColumn Header="first_name " Width="100" DisplayMemberBinding="{Binding Path=First_name}" />
                <GridViewColumn Header="last_name" Width="100" DisplayMemberBinding="{Binding Path=Last_name}" />
                <GridViewColumn Header="phone_number" Width="100" DisplayMemberBinding="{Binding Path=Phones[0]}" />
                <GridViewColumn Header="notes" Width="100" DisplayMemberBinding="{Binding Path=Notes}" />
            </GridView.Columns>
        </GridView>
    </ListView.View>
</ListView>

а вот код:

 ObservableCollection<Employee> Gemployees;
var employees = new ObservableCollection<Employee>(search.employees());

search.employees()получить список всех сотрудников в моей БД

 listBoxPE.ItemsSource = employees;
        Gemployees = employees;

теперь я могу выполнять все методы на Gemployees

 Gemployees.Remove((Student)listBoxSS.SelectedItem);
 Gemployees.Add((Student)listBoxSS.SelectedItem);

ListViewвыполняет обновление всякий раз, когда я добавляю или удаляю элемент из Gemployees!! Круто, но все же немного тяжело работать над переплетом. Теперь я создаю класс интерфейса для каждого ListView, чтобы я мог поместить в него свои вещи. Он не будет обеспечивать никакой гибкости при добавлении элементов.

21
задан slavoo 9 March 2015 в 14:40
поделиться