Alle ListView Items in eine andere ListView packen

  • WPF

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Scrumplex.

    Alle ListView Items in eine andere ListView packen

    Hallo!
    Ich wollte fragen wie ich es hinkriege alle Items von listbox1 in eine Kopie (listbox2) zu verschieben.

    Mein Code:

    C#-Quellcode

    1. foreach(Item item in listBox1.Items)
    2. {
    3. listBox2.Items.Add(item);
    4. listBox1.Items.Remove(item);
    5. }


    Der Fehler:

    Quellcode

    1. ​Die Auflistung wurde geändert. Der Enumerationsvorgang kann möglicherweise nicht ausgeführt werden.


    PS: Bin neu bei WPF ;)
    in wpf sollte man solch überhaupt nicht machen.
    Sondern man sollte ein Viewmodel haben, mit einer Observablecollection - in deinem Falle ja 2 OCs, denn du willst ja von einer in die andere übertragen.
    Jo, und dann deine Listboxen im Xaml an diese OCs binden.

    Das ist das eine Problem, das Hauptproblem, und da solltest du im Wpf-Tut-Bereich dich umfassend schlau machen, wie man ein Wpf-Projekt überhaupt aufzieht, unter besonderer Berücksichtigung des MVVM-Patterns.


    Dann gibts noch ein Neben-Problem: Natürlich kann man eine Auflistung nicht durchlaufen, und gleichzeitig die durchlaufenen Items daraus entfernen.
    Lösch-Schleifen müssen grundsätzlich rückwärts laufen, denn wenn das letzte Item entfernt wird, bringt das nicht die Reihenfolge aller anderen durcheinander.

    ErfinderDesRades schrieb:

    in wpf sollte man solch überhaupt nicht machen.
    Sondern man sollte ein Viewmodel haben, mit einer Observablecollection - in deinem Falle ja 2 OCs, denn du willst ja von einer in die andere übertragen.
    Jo, und dann deine Listboxen im Xaml an diese OCs binden.

    Das ist das eine Problem, das Hauptproblem, und da solltest du im Wpf-Tut-Bereich dich umfassend schlau machen, wie man ein Wpf-Projekt überhaupt aufzieht, unter besonderer Berücksichtigung des MVVM-Patterns.


    Dann gibts noch ein Neben-Problem: Natürlich kann man eine Auflistung nicht durchlaufen, und gleichzeitig die durchlaufenen Items daraus entfernen.
    Lösch-Schleifen müssen grundsätzlich rückwärts laufen, denn wenn das letzte Item entfernt wird, bringt das nicht die Reihenfolge aller anderen durcheinander.



    Ah ok danke für den Denkanstoß

    C#-Quellcode

    1. foreach (Item item in items)
    2. {
    3. listBox2.Items.Add(item);
    4. }
    5. listBox1.Items.Clear();


    So funktioniert's :)

    Und noch zur Aussage wie man ein WPF Programm aufzeiht dass gucke ich mir auch mal an :)