MVVM Verständnisfragen

SomeDifferent

Kabelverknoter(in)
MVVM Verständnisfragen

Hallo PCGH´ler.

ich beschäftige mich seit knapp einem Jahr mit der Programmierung in .NET und schreibe bereits einige kleine bis Mittelgroße Programme für meinem Lehrbetrieb. Diese funktionieren soweit, laufen stabil und zügig, doch irgendetwas in meinem Inneren sagt mir, dass mein Code nicht sauber genug geschrieben ist. Dazu muss ich sagen, dass ich hauptsächlich mit WPF arbeite. Vorallem das DataBinding und die beinahe unendlich wirkenden Möglichkeiten Steuerelemente anzupassen, haben bei mir bereits Gefallen gefunden.

Bezüglich des Code-Chaos bin ich bereits vor einiger Zeit auf das MVVM gestoßen. Dieses habe ich mir (leider) nur flüchtig angeschaut und offensichtlich falsch verstanden. Das Verständnis habe ich jetzt aufgeholt, doch mir werfen sich immer wieder neue Fragen auf.

Mein größtes Problem zur Zeit ist, dass meine Anwendungen aus mehreren Fenstern bestehen. Diese müssen, laut des MVVM-Patterns, auf ein eigenes ViewModel zugreifen können, richtig? Gesagt getan : Window erstellt, ViewModel erstellt. Doch wie bringe ich diese beiden sauber in Verbindung zu A. einander und B. dem Rest der Anwendung? Mein 1. Gedanke war, das Window im Konstruktor des dazugehörigen ViewModels zu erstellen, ihm dann selbiges als DataContext zuzuweisen. Das ViewModel packe ich in eine Liste vom MainWindowViewModel(ViewModel, des MainWindows).
Ist das so richtig?

Vielleicht könnt ihr mir etwas unter die Arme greifen. Beispiele, dich ich zum MVVM gefunden habe, beinhalten diesen Fall mit mehreren Fenstern nicht. Ist das so speziell?

Viele Grüße und schonmal Danke für eure Tipps

Kai
 
AW: MVVM Verständnisfragen

Moin,

gleich vorweg: Von MVVM habe ich bisher noch nichts gehört und habe mich eben mal kurz "eingelesen"; ich garantiere also für nichts :ugly:

Mein größtes Problem zur Zeit ist, dass meine Anwendungen aus mehreren Fenstern bestehen. Diese müssen, laut des MVVM-Patterns, auf ein eigenes ViewModel zugreifen können, richtig?
joaa .. also klar ist auf jeden Fall, dass die verschiedenen Fenster möglichst eine gemeinsame Datensammlung referenzieren und darauf operieren. Und soweit ich das jetzt verstanden/interpretiert habe bekommt ein Fenster ein ViewModel, welches mit dem tatsächlichen Model verbunden ist.

Mein 1. Gedanke war, das Window im Konstruktor des dazugehörigen ViewModels zu erstellen, ihm dann selbiges als DataContext zuzuweisen. Das ViewModel packe ich in eine Liste vom MainWindowViewModel(ViewModel, des MainWindows).
Ist das so richtig?
Es klingt jedenfalls nach einer vernünftigen Möglichkeit. Aus der Intuition heraus hätte ich eher den Fenstern im Konstruktor das zugehörige (und bereits möglichst fertig konfigurierte/verbundene) ViewModel übergeben. Hauptsache die Verknüpfung der Komponenten ist am Ende (also für die Bedienung) richtig.

Schaut das dann nicht so aus:
- ViewModels und models etc. erstellen und konfigurieren
- Fenster erstellen; exemplarisch: ... = new Window(... viewModel_0);
- Application.Run .. (oder wie auch immer das mit WPF gemacht wird)

Was ich dann aber etwas merkwürdig finde, ist, dass dort nichts von Thread-Kollisionen o.ä. erwähnt wurde (zumindest die Seiten, die ich eben überflogen habe).
 
AW: MVVM Verständnisfragen

Danke und zugleich Sorry für meine verspätete Antwort.

Zumindest scheine ich nicht ganz falsch zu liegen, mit meinem Bauchgefühl.
Am Wochenende habe ich wieder mehr Zeit mich intensiv mit der Thematik zu beschäftigen. Zur Zeit liegen noch andere Projekte an.

Bei weiteren Fragen, die mit hoher Wahrscheinlichkeit auftreten, melde ich mich wieder :D.

Weitere Antworten auf die obige Frage sind weiterhin willkommen :)

Grüße Kai
 
Zurück