MVVM Services registrieren



  • Hallo

    Wo registriert ihr eure Services in einem MVVM Projekt. Bzw wo initialisiert ihr allgemeine Sachen?

    Ich erstelle gerade ein UserControl das man in andere Applikationen einbinden kann.

    Hier ist der erste Einstiegspunkt der Konstruktor des MainViews.
    Hier würde ich nun ungern meine Services registrieren. Wäre ja dann Code behind, was nicht dem MVVM Model entspricht.

    Habt ihr mir einen Tipp.



  • Hallo,

    also ganz allgemein binde ich mein VM immer in der App.xaml ein. Hab mit das mal aus einem Beispiel von Microsoft abgegeguckt. Die machen das sehr häufig so.
    Und in meiner MainWindow.xaml sieht es dann so aus:

    <Window.DataContext>
            <Binding Source="{StaticResource StaticViewModel}" />
        </Window.DataContext>
    

    Hoffe, das konnte dir irgendwie helfen



  • Und in deinem StaticViewModel registrierts du dann unter anderem deine Services.
    Ist ja aber eigentlich nicht die Aufgabe eines ViewModels.



  • Definiere mal bitte das Wort "Service"



  • Ein Stück Software das ausgelagert wird um Dienste zu übernehmen die nichts mit der View direkt zu tun haben - z.B. ein Datenbankzugriffservice - der bei einem ServiceLocator über ein Interface registriert wird. Und dann später von einem ViewModel darauf zugegriffen werden kann.

    Unter anderem ein Teilaspekt von MVVM.



  • Hmm.. aber dann ist es kein UserControl mehr wenn es nichts mit der View zu tun hat. Und wenn du beispielsweise Code auslagern willst, wir machen das nebenbei bemerkt mit unserem ganzen ObjektContext, dann binde es doch im VM direkt ein.



  • Hmm.. aber dann ist es kein UserControl mehr wenn es nichts mit der View zu tun hat.

    Sicher ist es ein UserControl. Aber die Dienste ja nicht.



  • Mir fehlt irgendwie gerade der Anreiz dein Problem noch weiter zu verstehen. Viel Glück also...



  • Oh man immer erst rum trollen und dann den Thread so liegen lassen. Da antwortet doch nun keiner mehr drauf.



  • OrginellerName schrieb:

    Wäre ja dann Code behind, was nicht dem MVVM Model entspricht.

    Guten Morgen!

    Es ist vollkommen in Ordnung, in der Code-Behind die Services zu registrieren. MVVM ist zwar gut, aber nicht immer ist es sinnvoll ausschließlich auf dieses Pattern zu beharren.



  • Hallo.

    Danke für deine Antwort PuppetMaster2k.

    Ich habe nun eine statische Klasse Bootstrapper. Diese beinhaltet eine Methode Load. Darin registriere ich nun meine Services und mache sonstige Initialisierungen.

    Die LoadMethode rufe ich dann im Codebehind der MainView auf. Das ist dann die einzige Methode - neben InitializeComponent - im Codebehind.


Log in to reply