La operación no es válida mientras ItemsSource está en uso. Acceda y modifique los elementos con ItemsControl.ItemsSource en su lugar

Soy nuevo en Binding y WPF recientemente. Aprendí a crear unlistBox con columnas múltiples utilizando tecnología de unión

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

Y este es el código:

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

pero el problema fue cuando intenté usar agregar o quitar elementos o borrar

 listBoxSS.Items.Clear();

Por favor, necesito un ejemplo para usar la fuente de los elementos o la forma en que puedo AGREGAR, Eliminar elemento o Borrar la lista.

EDITAR:

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

Y aquí está el código:

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

search.employees() obtener la lista de todos los empleados en mi base de datos

 listBoxPE.ItemsSource = employees;
        Gemployees = employees;

Ahora puedo realizar todos los métodos en Gemployees.

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

losListView realizar una actualización cada vez que agrego o elimino un artículo de Gemployees !! Genial, pero aún un poco duro trabajo en encuadernación. Ahora estoy haciendo una clase de interfaz para cada ListView para poder poner mis cosas en él. No realizará ninguna flexibilidad en la adición de elementos.

Respuestas a la pregunta(8)

Su respuesta a la pregunta