Abgeteilt von Wie verschiedene Windows mit MVVM synchron halten?
Nochmal dazu eine Frage:
Bisher habe ich es so gemacht:
im MainWindowViewModel habe ich einen Command der ein neues Fenster öffnet, dem das zugehörige ViewModel zuweist und den DbService mitgibt.
Jetzt sollte die UI Schicht ja eigentlich von den ViewModels komplett getrennt sein. Also das MainWindoViewModel das zweite Fenster gar nicht kennt.
Wie mache ich das am besten, dass ich das in XAML definiere? Also einen Command der ein neues Fenster öffnet, ViewModel mitgibt. Brauche ich für sowas dann doch Codebehind?
Das Thema wurde bereits mehrfach besprochen, z.B. hier: WPF: Öffnen eines neuen Windows
Kurz gesagt gibt es folgende Möglichkeiten:*Window.Show() im Command aufrufen und damit das MVVM-Pattern zu verletzen, *Einen WindowsService implementieren oder eine fertige Implementierung aus einem MVVM-Framework verwenden, *Gar keine Fenster verwenden, sondern Bereiche im Hauptfenster ein- und ausblenden
Ich selbst benutze im Prinzip nur die letzte Variante, das ist am einfachsten umzusetzen (über ein DataTemplate pro Bereich) und am übersichtlichsten für den Benutzer.
Weeks of programming can save you hours of planning
Hallo,
Du kannst auch mal in meiner Antwort hier schauen:
Object von Window zu Window weiter geben
Unten im Beitrag habe ich ein paar Möglichkeiten für diese Problematik aufgelistet.
Der dort erwähnte ViewManager entspricht dabei dem WindowsService, den MrSparkle nannte.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Der dort erwähnte ViewManager entspricht dabei dem WindowsService, den MrSparkle nannte.
Danke für den Tipp!
public interface IWindowManager
{
void ShowOrderWindow(OrderViewModel order);
...
}
So habe ich es jetzt gemacht, das MainViewModel initalisiert den WindowManager, und nutzt den Manager dann um die Fenster aufzurufen.
Dann ist der Manager ein Ausbruch aus dem Pattern. Aber ich denke noch ein recht übersichtlicher 👍
Danke euch!