Laden...

MainWindow nach dem Hinzufügen oder Löschen von Usercontrols per Children.Add neu aufrufen?

Erstellt von ReliantScimitar vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.236 Views
R
ReliantScimitar Themenstarter:in
12 Beiträge seit 2019
vor 4 Jahren
MainWindow nach dem Hinzufügen oder Löschen von Usercontrols per Children.Add neu aufrufen?

Hallo Experten,

ich erzeuge in der WPF dynamisch per List-Objekt Stackpanels und füge diesen Textboxen hinzu (beides mit Children.Add).
Nun füge ich im MainWindow per Button mit Children.Insert weitere Stackpanels mit Textboxen ein oder lösche welche mit Children.Remove. Funktioniert soweit alles perfekt (inkl. Datenbindung).

Aber: Muss hier das MainWindow jeweils refresht oder neu aufgerufen werden?

Es tritt nämlich dieses Phänomen auf:
Wenn der Text einer Textbox in einem Stackpanel, das sich unter dem gerade neu eingefügten Stackpanel befindet, geändert wird und anschließend ein anderes Stackpanel angeklickt wird, dann wird der Inhalt des geänderten Textfelds auf den Inhalt des Stackpanels, das sich darüber befindet, abgeändert.
Die Datenbindung der vorhandenen und der neu hinzugefügten Textbox-Inhalte funktioniert jedoch fehlerfrei.

Ähnliches Phänomen beim Löschen. Situation ist, als ob die Stackpanels im Bildschirm ihre alte Position vor dem Einfügen/Löschen behalten hätten.

VG

656 Beiträge seit 2008
vor 4 Jahren

Implementiert deine Children Collection auch INotifyCollectionChanged? Eine normale List<T> macht das nicht, aber eine ObservableCollection<T> beispielsweise schon.

5.657 Beiträge seit 2006
vor 4 Jahren

Verwende lieber DataBinding und erstelle deine View im XAML. Siehe [Artikel] MVVM und DataBinding

Weeks of programming can save you hours of planning

R
ReliantScimitar Themenstarter:in
12 Beiträge seit 2019
vor 4 Jahren

Hallo BhaaL,

sehr seltsam: der Fehler lässt sich nicht mehr reproduzieren. Als ich vor zwei Tagen die ObservableCollection ausprobiert habe, war er weiterhin da.
Jetzt ist er auch mit der normalen List verschwunden, ohne dass ich auch nur irgendetwas geändert hätte...

@MrSparkle: Wie schon erwähnt, arbeite ich mit DataBinding.

Trotzdem Vielen Dank.

R
ReliantScimitar Themenstarter:in
12 Beiträge seit 2019
vor 4 Jahren

Trotzdem nochmal die grundsätzliche Frage: Sind solche Fehler sehr ungewöhnlich oder kann das in Einzelfällen mal vorkommen, dass beim Kompilieren etwas verhunzt wird? Oder das auf irgendeinen Teil der Programmbibliothek aus welchem Grund auch immer nicht zugegriffen wird?

Wie sind Eure Erfahrungen?

Gibt es so eine Art Korrektur- oder Prüfprogramm?

16.788 Beiträge seit 2008
vor 4 Jahren

Trotzdem nochmal die grundsätzliche Frage: Sind solche Fehler sehr ungewöhnlich oder kann das in Einzelfällen mal vorkommen

Auf Entwicklermaschinen kann es immer zu Seiteneffekten kommen.

Wenn man seine Software jedoch sauber durch eine DevOps Pipeline baut und testet, dann kann dies quasi nicht vorkommen.

Der Compiler ist i.d.R. auch die letzte Quelle der Ursache.

Gibt es so eine Art Korrektur- oder Prüfprogramm?

[Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio

R
ReliantScimitar Themenstarter:in
12 Beiträge seit 2019
vor 4 Jahren

Sorry an alle, der Fehler lag bei mir...

Das Problem war deshalb zunächst weg, weil ich den Neuaufruf des MainForm in einer bestimmten Variante testweise bereits eingefügt, das aber vergessen hatte, was natürlich dämlich ist...

Das eigentliche PROBLEM war, dass ich nach dem Children.Insert zwar meinen DataView und damit meine Table inhaltlich etc. upgedatet, aber nicht daran gedacht hatte, auch die Datenbindung der nach der Einfügestelle befindlichen Textboxen entsprechend anzupassen (die Textboxen sind über die Zeilennr. an die jeweilige Zeile in der Table gebunden), und ist nun GELÖST.