Von der ViewModel aus dem View sagen, dass es schließen soll

  • WPF

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von BeatsleigherXDA.

    Von der ViewModel aus dem View sagen, dass es schließen soll

    Hallo,

    ich habe ein Projekt mit einem Splash-Screen. Dieses Splash-Screen bekommt seine Werte und Anzeige-Daten von einer ViewModel.
    Am Ende des Startvorgangs, soll das Splash-Screen geschlossen werden.

    Nun, ich habe die VM in XAML deklariert, und weiß nun nicht, wie ich von der VM aus dem View sagen soll, dass es schließen soll.
    Normalerweise mache ich es so, dass ich die VM im Codebehind deklariere, aber da das ja ein "Bad-Practice" ist, wollte ich es mir gerne abgewöhnen und es so machen.

    Ich bedanke mich schon mal im Voraus für hilfreiche Vorschläge!
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln
    Tatsächlich gibt es dafür nur wenig gute Ansätze. Mach im ViewModel ein Event welches das Codebehind der View abboniert und sich schließt.
    Für alle die es gerne etwas komplizierter mögen: codeproject.com/Tips/499977/Closing-View-from-ViewModel
    Wie immer, viele Wege führen nach Rom.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    Moin,

    da gibt es wohl mehrere Möglichkeiten. Welche gut sind, kann ich nicht wirklich beurteilen, aber das sieht mir ganz ok aus:
    adammills.wordpress.com/2009/07/01/window-close-from-xaml/
    Somit kriegste das dann auch über die Bindings so hin.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    In meinen Augen ja. Das ViewModel kennt die View trotzdem nicht. Und hier einen Religionskrieg anzetteln wegen einer Zeile Codebehind. Man muss auch mal realistisch bleiben und Hirn einschalten.
    Wäre im Codebehind ja nicht mehr als sowas:

    C#-Quellcode

    1. ((MeinViewModel)DataContext).CloseMainWindow += (s, e) => Close();


    Ich greife selbst sehr gerne auf MVVM zurück (obwohl ich GU's so gut wie nie brauche), habe auch schon sehr viel damit gearbeitet aber übertreiben muss man auch nicht. Ist auch nicht der einzige Ansatz. Es gibt auch Leute die ohne MVVM entwickeln. Geht auch. In meinen Augen nicht so gut aber geht auch. In diesem Forum ist die Meinung allgemein sehr einschlägig, da es gewisse Personen gibt, welche auf ihrer Meinung pochen diese als einzig wahre Religion verkaufen und jeder dahergelaufene Anfänger folgt ihnen blind. Ich bilde mir da lieber selbst meine Meinung. Und eine Zeile Codebehind hat noch keinen umgebracht. Und der Inhalt der Zeile ist sowieso MVVM konform. Jedes Binding,... funktioniert über Events. Genau das gleiche.


    Opensource Audio-Bibliothek auf github: KLICK, im Showroom oder auf NuGet.
    @Trade Jo, danke!

    Ich werd's gleich mal ausprobieren!

    thefiloe schrieb:

    Und hier einen Religionskrieg anzetteln wegen einer Zeile Codebehind.

    Haha, ne. War nur eine allgemeine Frage ;) Alles gut.
    "Nichts ist unendlich, bis auf die menschliche Dummheit" - Albert Einstein
    "Man sollte nicht alles vertrauen, was im Netz steht" - Abraham Lincoln