Autor Beitrag
MK2291
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 09.12.14 15:56 
Hallo liebes Forum,

ich weiß mal wieder nicht weiter. Also hier zu meinem Programm. Ich habe ein Usercontrol mit Textboxen das in einer Listview im Mainwindow gesetzt ist. Das Usercontrol wird dan per Buttonklick, auf hinzufügen, ein weiteres mal hinzugefügt. Jetzt mein Problem: Ich will das Usercontrol dann aber wieder per Buttonklick, auf entfernen, entfernen aber das Usercontrol muss mit dem Inhalt in den Textboxen abgespeichert werden damit ich es wieder (per klick auf Hinzufügen) hinzufügen kann(mit Inhalt in den Textboxen). Hat da jemand eine Idee wie ich das Usercontrol abspeichern kann?

MFG

MK


Moderiert von user profile iconTh69: Topic aus Basistechnologien verschoben am Di 09.12.2014 um 16:53
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Di 09.12.14 16:44 
So ganz verstehe ich nicht so ganz, was du willst.

Verstanden habe ich soviel:

Du hast ein ListView, in dem UserControls drin aufgelistet werden. Per Buttonklick soll eines hinzugefügt oder entfernt werden.
Ich würde dazu empfehlen, dass du im ViewModel (MVVM Pattern) die Elemente in einer ObservableCollection bereit stellst. Das könnten z.B. Objekte einer Klasse Person sein. Dargestellt werden sie dann mit Hilfe deines UserControls. Die ListView muss ihre Items an die ObservableCollection binden.
Nun kannst du der Collection Person-Objekte hinzu fügen wie du möchtest und es werden immer entsprechende Items dargestellt, also z.B. Eingabemasken für die Personen-Daten. So könntest du auch leere Objekte hinzufügen, die dann die Daten erst durch die User-Eingabe erhalten.
Hinzufügen und entfernen solltest du dann über Commands machen, also bloß nicht selber in der View die Items hinzufügen und entfernen.


Wenn das nicht das ist, was du meinst, dann müsstest du etwas genauer beschreiben, was du vorhast.

Außerdem (@ ein netter Moderator) denke ich, dass das Thema im WPF-Bereich besser aufgehoben ist.

Für diesen Beitrag haben gedankt: MK2291
MK2291 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 09.12.14 17:02 
Nochmal und tut mir Leid wegen der ungenauen Beschreibung.
Ich hab eine List View und ein Usercontrol.
Im Usercontrol ist eine Textbox.
Per Buttonclick (wie du schon richtig gesagt hast) kann man das Usercontrol hinzufügen (auch öfter möglich) und entfernen.
Aber wenn ich das Usercontrol entferne soll es eigentlich nur verschwinden (aber in einer Berechnung aus allen Textboxen nicht berücksichtigt werden). Wenn ich jetzt z.B. 3 Usercontrols (also 3 Textboxen) hinzugefügt hab müssen alle 3 in der Berechnung enthalten sein, was auch kein Problem darstellt. Aber wenn ich jetzt z.B. das 3 Usercontrol entferne(verschwinden lasse), muss der Inhalt der in der Textbox war, abgespeichert werden. Weil es ja sein kann das ich das Usercontrol gar nicht löschen wollte und ich per Usercontrol hinzufügen das 3 Usercontrol wieder mit den Daten hinzufügen kann. Wenn das Usercontrol aber entfernt wurde, dürfen die Daten in der Berechnung nicht berücksichtigt werden.

Hoffe ist jetzt bisschen verständlicher
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Di 09.12.14 17:10 
Hallo,

da du von "Mainwindow" sprichst, gehen denke ich mal alle davon aus, dass du WPF benutzt und nicht WinForms. Ich weiß nicht wie gut du dich in WPF auskennst und wie stark du die UI vom C# Code abkapseln möchtest. Für einfache Anwendungen könnte man auch einfach die Instanz des UserControls behalten und es einfach nur aus dem Grid entfernen. Du hast dann z.B. zwei Listen: eine für die UserControls die momentan angezeigt werden und eine Liste für die, die schon mal angezeigt wurden, aber wieder entfernt wurden. Wenn du nun wieder ein UserControl hinzufügen willst, prüfst du zuerst, ob ein UserControl in der zweiten Liste ist. Wenn ja, schiebst du es in die andere Liste und fügst es wieder dem Grid hinzu.

Bei dieser Lösung sind Code und UI wieder etwas verflochten, was eigentlich kein guter Stil für WPF ist. Aber meiner Meinung nach ist das MVVM Pattern gerade für kleinere Projekte und Anfänger unnötig.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler

Für diesen Beitrag haben gedankt: MK2291
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 09.12.14 17:17 
Zitat:
(aber in einer Berechnung aus allen Textboxen nicht berücksichtigt werden)


Die UI sind nicht deine Daten und mit den Daten solltest du Berechnungen vornehmen und nicht mit Controls die ~zufällig~ deine Daten anzeigen. Den Gedanken solltest du schnell aus dem Kopf streichen. Wenn du es schon so programmiert hast das Daten nicht von der datenanzeigenden UI unterscheidbar ist hast du eh ein ziemlich grundsätzliches Problem das dich ständig ausbremsen wird.

Trenne Daten (schaffe ein Datenmodell) so das du die nur an die UI binden mußt und synchronisiere zwischen Daten und UI. Dann ist die Existenz oder nicht Existenz der UI völlig egal und unabhängig von den Daten. Wenn es hier tatsächlich um WPF geht forsche mal nach dem bereits erwähnten Stichwort MVVM. Das löst alle diese Probleme bereits und mußt du nicht neu erfinden.

Für diesen Beitrag haben gedankt: MK2291
MK2291 Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 09.12.14 17:29 
Danke sehr für die schnellen Antworten. Werde mich gleich mal hinsetzen und die Vorschläge umsetzen.

PS: Ja bin neu in C# und WPF