2010-08-03 10 views
7

Ich habe kürzlich den Konstruktor meines ViewModels parametrisiert. Vorher machte ich das in meinem Fenster:Wo kann man ein parametrisiertes ViewModel erstellen?

<Window.DataContext> 
    <vm:MyViewModel /> 
</Window.DataContext> 

Das Framework instanziiert das ViewModel für mich.

Ich weiß, dass ich DataContext in Code festlegen kann, aber ich würde einen XAML-Weg bevorzugen, damit Designer meine Testdaten beim Entwerfen anzeigen kann.

Ist das möglich?

Antwort

14

Verwenden Sie ein ObjectDataProvider wenn Sie Konstruktorparameter angeben mögen:

<Window.DataContext> 
    <ObjectDataProvider ObjectType="vm:MyViewModel" 
     xmlns:sys="clr-namespace:System;assembly=mscorlib"> 
     <ObjectDataProvider.ConstructorParameters> 
      <sys:String>A string parameter</sys:String> 
      <sys:Int32>42</sys:Int32> 
     </ObjectDataProvider.ConstructorParameters> 
    </ObjectDataProvider> 
</Window.DataContext> 
+0

Danke, ich wusste, dass es getan werden könnte. – Kugel

10

Ich habe keine Ahnung, wie man einen Contructor-Parameter übergibt, ich denke, dass es nicht getan werden kann (aber es wäre nett, wenn jemand mir das Gegenteil beweisen würde).

Was können Sie tun gesetzt Eigenschaften auf Ihrem Ansichtsmodell, wie es in

<Window.DataContext> 
    <vm:MyViewModel MyProperty="Hello" /> 
</Window.DataContext> 
+0

Property Injektion, gut und einfach. – Kugel

+0

Einfach und klar! – objecto

Verwandte Themen