Laden...

DLL mit mehreren UserControls anlegen, die ich über die Toolbox anlegen kann

Erstellt von Gimmick vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.141 Views
G
Gimmick Themenstarter:in
154 Beiträge seit 2015
vor 4 Jahren
DLL mit mehreren UserControls anlegen, die ich über die Toolbox anlegen kann

Hallo,

ich möchte eine DLL erzeugen, die zwei oder mehr UserControls enthält, welche die jeweils gleiche "Datenbasis" haben und sich über die ToolBox einfügen lassen.
Gleiche "Datenbasis" soll z.B. heißen:
Eine Control enthält eine TextBox, das andere Control eine ListBox -> Das Control mit der TextBox zeigt immer die Anzahl der Elemente in der ListBox an.

Meine erste Frage wäre nun: Geht das überhaupt?
Ein neues Control ist doch eigentlich immer ein eigenständiges Object, woher soll die Verbindung zwischen den einzelnen Controls kommen?

Normalerweise hätte ich das ganze in einer eigenen Klasse umschlossen, sodass die Controls nur zur Laufzeit hinzugefügt werden können "Class1 Cl = new Class1" -> Cl.Control1 .... / Cl.Control2 ....

Dann kann man sich die Controls aber nicht im Designer hinziehen wie man es gerne hätte.

Zweite Frage wäre nun: Wenn das geht: Wie? 🤔

G
Gimmick Themenstarter:in
154 Beiträge seit 2015
vor 4 Jahren

Nachdem ich einiges ausprobiert habe:

Wenn ich zwei Controls habe und beide auf die selben Daten zugreifen können sollen, muss ich die Datenklasse wohl oder übel statisch setzen.

Damit greifen aber alle Control1s und alle Control2s auf die selben Daten zu.

Ich würde jetzt noch eine Schicht darunter eine statische Klasse einbauen, die eine Liste über die nicht-statischen Datenklassen führt und den Controls über ihren Constructor einen festen Index zuweisen.

Muss ich aber wohl noch einen Finalizer einbauen, um den ganzen Kram mit zu entfernen, wenn das Control entfernt wird =/

S
248 Beiträge seit 2008
vor 4 Jahren

Hallo Gimmick.

Wieso erstellst du nicht ein neues UserControl das die Text- und ListBox enthält und dieses Control auf die "Datenbasis" zugreift? Damit kannst du die Daten an dieses Control binden und dann auch mehrfach verwenden.

Grüße

G
Gimmick Themenstarter:in
154 Beiträge seit 2015
vor 4 Jahren

Wieso erstellst du nicht ein neues UserControl das die Text- und ListBox enthält und dieses Control auf die "Datenbasis" zugreift? Damit kannst du die Daten an dieses Control binden und dann auch mehrfach verwenden.

Moin,

die einzelnen Controls können in unterschiedlichen Fenstern/Reitern liegen. Ich muss die schon trennen.

S
248 Beiträge seit 2008
vor 4 Jahren

Dann würde ich bei beiden Controls gegen das gleiche VM binden. Musst du doch eh machen, wenn diese auf die gleichen Daten zugreifen sollen.

G
Gimmick Themenstarter:in
154 Beiträge seit 2015
vor 4 Jahren

Dann würde ich bei beiden Controls gegen das gleiche VM binden. Musst du doch eh machen, wenn diese auf die gleichen Daten zugreifen sollen.

Ja, das sollen nur idealer Weise die Controls selbst machen, so dass man Control1 und Control2 beliebig über die Toolbox einbauen kann, die Verknüpfung der Pärchen aber automatisch entsteht.

Ich habs jetzt erstmal so gemacht, dass man den Control über eine Methode schon noch sagen muss zu welchem Datenbestand sie gehören.

5.657 Beiträge seit 2006
vor 4 Jahren

Steuerelemente gehören zur View und sind nur dazu da, Daten anzuzeigen. Woher diese kommen, wissen sie nicht. Wenn die Controls dann verwendet werden, bindest du einfach die Daten per DataBinding an die Controls für die Darstellung. Das ist wahrscheinlich das, was du über die Methode gelöst hast, aber das geht einfacher.

Siehe dazu [Artikel] Drei-Schichten-Architektur, und (wenn es um WPF geht): [Artikel] MVVM und DataBinding

Weeks of programming can save you hours of planning