myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: WPF und XAML » Wie kann man unter WPF ein neues Fenster MVVM-konform öffnen?
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Wie kann man unter WPF ein neues Fenster MVVM-konform öffnen?

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
myCSharp.de
Moderationshinweis von MrSparkle (22.10.2020 12:36):

Abgeteilt von  Wie verschiedene Windows mit MVVM synchron halten?
 
JimStark
myCSharp.de-Mitglied

avatar-1005.jpg


Dabei seit: 10.03.2020
Beiträge: 155
Entwicklungsumgebung: Visual Studio 6.0 Enterprise


JimStark ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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?
22.10.2020 08:47 Beiträge des Benutzers | zu Buddylist hinzufügen
MrSparkle MrSparkle ist männlich
myCSharp.de-Team

avatar-2159.gif


Dabei seit: 16.05.2006
Beiträge: 5.565
Herkunft: Leipzig


MrSparkle ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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.
22.10.2020 12:40 Beiträge des Benutzers | zu Buddylist hinzufügen
MarsStein MarsStein ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3191.gif


Dabei seit: 27.06.2006
Beiträge: 3.160
Entwicklungsumgebung: VS 2013, MonoDevelop
Herkunft: Trier -> München


MarsStein ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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
22.10.2020 12:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
JimStark
myCSharp.de-Mitglied

avatar-1005.jpg


Dabei seit: 10.03.2020
Beiträge: 155
Entwicklungsumgebung: Visual Studio 6.0 Enterprise

Themenstarter Thema begonnen von JimStark

JimStark ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von MarsStein:
Der dort erwähnte ViewManager entspricht dabei dem WindowsService, den MrSparkle nannte.

Danke für den Tipp!

C#-Code:
    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 Daumen hoch

Danke euch!

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von JimStark am 23.10.2020 11:54.

23.10.2020 11:53 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Monat.
Der letzte Beitrag ist älter als ein Monat.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 30.11.2020 11:54