2010-08-03 19 views
7

Recientemente he parametrizado el contructor de mi ViewModel. Antes de eso, estaba haciendo esto en mi ventana:¿Dónde crear ViewModel parametrizado?

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

El marco creó una instancia del ViewModel para mí.

Sé que puedo configurar DataContext en el código, pero preferiría una forma XAML para que el diseñador pueda mostrar mis datos de prueba al diseñar.

¿Esto es posible?

Respuesta

14

Utilice un ObjectDataProvider si desea especificar parámetros del constructor:

<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

Gracias, sabía que se podía hacer. – Kugel

10

No tengo idea de cómo pasar un parámetro contructor, creo que no se puede hacer (pero sería bueno si alguien me probara mal).

Lo que puede hacer es establecer las propiedades en su modelo de vista, como en

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

inyección de la propiedad, buena y sencilla. – Kugel

+0

¡Simple y claro! – objecto

Cuestiones relacionadas