Autor Beitrag
Oppi35
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Fr 30.09.11 17:22 
Hallo Zusammen,

ein ViewModel kann direkt im XAML Code instanziert werden. Dies hat m.E. den großen Vorteil, dass man Bindings schon während der Entwurfszeit am Rechner sieht.

Häufig ist es bei mir allerdings so, dass es sinnvoll ist, dass ViewModel mit einem parametisierten Konstruktor zu versehen. Ich übergebe hier z.B. einen DataProvider (für Test bzw. Produktion). Dies macht nach meinem aktuellen Kenntnisstand eine Instanzierung in XAML so gut wie unmöglich.

Also muss ich je nach Implemenierungsart des MVVMs z.B. in der Code-Behind Datei mein ViewModel instanzieren und hier den DataContext setzen. Nur sehe ich jetzt zur Entwurfszeit leider keine Bindings mehr in meiner View.

Kann mir jemand einen Tip geben, wie ich ein ViewModel mit parametisiertem Konstruktor am sinnvollsten instanziere? Oder wie ich einen param. Konstruktor umgehen kann?

Viele Grüße

Frank.
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: Fr 30.09.11 20:21 
Hallo,

guck mal: MVVM Instantiation Approaches, da siehst du ein paar Möglichkeiten wie es geht. Welche du nimmst ist dir überlassen ;-)
Hauptsache testbar ist es und natürlich dass es funktioniert.

mfG Gü

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!

Für diesen Beitrag haben gedankt: Oppi35
Oppi35 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 95
Erhaltene Danke: 3



BeitragVerfasst: Fr 30.09.11 20:46 
Vielen Dank für Deine Hilfe. Leider gibt es unter den zahlreichen Optionen keine, die sich mit einem parametisierten Konstruktor im ViewModel beschäftigt.

Letztendlich bleibt meine Frage offen, wie ich ein ViewModel mit param. Konstruktor so einbinden kann, dass ich zur Entwurfszeit sehe, ob das Binding funktioniert. Aber unanbhängig davon war es interessant, die Seite zu lesen.

Viele Grüße

Frank
gfoidl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 157
Erhaltene Danke: 19

Win XP
C#, Fortran 95 - Visual Studio
BeitragVerfasst: Fr 30.09.11 22:05 
Hallo,

Zitat:

unter den zahlreichen Optionen keine, die sich mit einem parametisierten Konstruktor im ViewModel beschäftigt.

in den Beispielen wurde das VM nur mit dem Standardkonstruktor instantiiert, aber es sind auch Konstruktoren mit Parametern möglich.

Zitat:

bleibt meine Frage offen, wie ich ein ViewModel mit param. Konstruktor so einbinden kann, dass ich zur Entwurfszeit sehe, ob das Binding funktioniert

Diese Frage hast du auch erst jetzt konkret gestellt ;-)
Hierzu kann ich dir keine Lösung für die Entwurfszeit nenne, da ich - wie viele andere auch - die View einfach in XAML runtertippen ohne den Designer. Somit werden Bindungsfehler erst zur Laufzeit bemerkbar. Hier hilft das Debug-Ausgabefenster, Snoop, etc.


mfG Gü

_________________
Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!

Für diesen Beitrag haben gedankt: Oppi35
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 01.10.11 00:04 
user profile iconOppi35 hat folgendes geschrieben Zum zitierten Posting springen:
Ich übergebe hier z.B. einen DataProvider (für Test bzw. Produktion).
Über Dependency Injection sollte sich das in einen parameterlosen Konstruktor und Properties umformen lassen. Selbst habe ich das noch nicht versucht, aber MEFedMVVM beispielsweise benutzt DI selbst zur Instanzierung der ViewModels und besitzt anscheinend Design Time Support.

_________________
>λ=

Für diesen Beitrag haben gedankt: Oppi35