Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Usercontrol mit Comboboxen
MikeReg
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

Usercontrol mit Comboboxen

beantworten | zitieren | melden

Hallo zusammen,

Ich habe so gut es ging in den Archiven geblättert, um meine Themen zu finden, aber so richtig passt leider keines, das ich gefunden habe.

Folgende Ausgangslage:

Ich würde gern mehrere Instanzen eines UserControl in einem TabControl im Hauptfenster anzeigen.

Ich habe zwei Punkte, bei denen ich nicht weiterkomme:

Punkt 1:



Diese UserControl-Instanzen sollen in anderen Tabs des TabControls "gespiegelt" werden (Oder von einer Tabseite auf die andere verschoben werden, je nachdem was einfacher zu realisieren ist.)
Ist es sinnvoller zwei Instanzen zu erzeugen, die auf die gleichen DependencyProperties zugreifen,
oder ist es besser das Control "umzukopieren"?


Punkt 2:

Zudem sollen der Inhalt einer Combobox auf einer dieser UserControl Instanzen neu geladen werden, wenn sich der Inhalt einer anderen Combobox (einer anderen UserControl Instanz) ändert. Das Databinding der UserControls aus dem Hauptfenster und das Befüllen der Comboboxen funktioniert.
Aber wie ich das dynamische Befüllen der Comboboxen über UserControlgrenzen hinweg hinbekommen soll, kann ich mir überhaupt nicht vorstellen.

Ist so etwas prinzipiell denkbar?

Kann mir jemand einen Tipp geben, wie man hier am besten vorgeht?


Vielen Dank für eure Kommentare
private Nachricht | Beiträge des Benutzers
Wilfried
myCSharp.de - Member

Avatar #2TnJ7IKlYXgOor5sZSIA.jpg


Dabei seit:
Beiträge: 135
Herkunft: Radeberg

beantworten | zitieren | melden

Hallo
schau dir mal das MVVM-Entwurfsmuster an, dann lösen sich deine Probleme von alleine.
[Artikel] MVVM und DataBinding
- Wer lesen kann, ist klar im Vorteil
- Meistens sitzt der Fehler vorm Monitor
- "Geht nicht" ist keine Fehlermeldung!
- "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF
private Nachricht | Beiträge des Benutzers
Alf Ator
myCSharp.de - Member



Dabei seit:
Beiträge: 656

beantworten | zitieren | melden

Hallo MikeReg

Du kannst das lösen, indem auf jedem Tab eine Instanz von deinem UserControl unterbringst, du alle auf genau ein ein ViewModel gebunden sind.
Den entsprechenden Link, wie man das macht, hat dir Wilfried geschrieben. Bei konkreten Fragen kannst du natürlich nochmal hier nachfragen.

Eine Frage noch: Wenn das UserControl auf allen Tabs angezeigt werden soll, warum machst du das dann nicht einfach 'neben' das TabControl?

Gruß
Alf
private Nachricht | Beiträge des Benutzers
MikeReg
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

@Wilfried: Danke für den link, ich arbeite mich gerade durch das Beispielprojekt

@Alf Ator: Danke für den Tipp.
Eine Frage noch: Wenn das UserControl auf allen Tabs angezeigt werden soll, warum machst du das dann nicht einfach 'neben' das TabControl?

Das würde gehen, aber ich will eines der UserControls auf einem Tab anzeigen und ein anderes UC auf einem anderen Tab.
Es soll sozusagen eine Übersichtsseite (TAB) geben, auf der alle UCs zu sehen sind, und daneben "Unterkategorien" (Tabs) in denen die UCs der einzelnen Komponenten nochmal einzustellen sind.

Also etwa so:
MAIN TAB:
UC Motor
UC Getriebe
UC Fahrwerk

Motor TAB:
UC Motor
Detail Einstellung Motor

Getriebe TAB:
UC Getriebe
Detail Einstellung Getriebe

Fahrwerk TAB:
UC Fahrwerk
Detail Einstellung Fahrwerk
private Nachricht | Beiträge des Benutzers
MikeReg
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

@Wilfried & @Alf Ator: Vielen Dank für eure Antworten. Das hat mir sehr geholfen, mehr vom Thema Databinding zu verstehen. Inzwischen laufen die äquivalenten UserControls Punkt 1 ist erledigt.

Aber Punkt 2 meiner Liste kann ich mit dem Beispielprojekt nicht so wirklich lösen.

Nochmal ein Beispiel:

Im User Control Motor stehen die Motoren:
UC Motor:
V6
V8
V12
Reihenmotor
Sternmotor


Wenn jetzt V8 ausgewählt ist, sollen im UserControl Getriebe nur noch die Werte
UC Getriebe:
ZF Planetengetriebe Typ 355
ZF Planetengetriebe Typ 356
ZF Planetengetriebe Typ 357


Wenn jetzt V6 ausgewählt ist, sollen im UserControl Getriebe nur noch die Werte
Renk R832 und
Renk R833

verfügbar sein.


Jetzt ist aber der OnPropertyChanged Aufruf im MotorViewModel, das wiederum nichts vom GetriebeViewModel weiß.

Könnt ihr mir sagen, wie man dieses Problem löst?

Vielen Dank im Voraus
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.356

beantworten | zitieren | melden

Wenn du Daten zwischen den ViewModels austauschen willst, dann müssen diese sich kennen (d.h. gib entsprechende Referenzen weiter).
Alternative wäre ein übergeordnetes ViewModel, das dann die Daten an die Sub-ViewModels weiterreicht.
private Nachricht | Beiträge des Benutzers
MikeReg
myCSharp.de - Member



Dabei seit:
Beiträge: 4

Themenstarter:

beantworten | zitieren | melden

@Th69: Vielen Dank für die Infos und die Links. Dann arbeite ich mich da mal ein...
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.356

beantworten | zitieren | melden

Die Links sind nur meine generelle Signatur...

Aber hier noch extra für dich: Communication between ViewModels with MVVM (schau dir also mal die MVVM-Frameworks an, z.B. mittels MVVM Light: Communicate Between Two View Models Using Messenger).
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers