2010-11-26 38 views
5

Soy nuevo en .net y MVVM designmodel. Estoy atascado ahora, porque en el archivo codebehind de una de mis Vistas, necesito obtener el Modelo correspondiente como un objeto. ¿Cómo está la relación aquí? ¿Es posible, y es "la forma correcta de hacerlo"?MVVM Modelo de acceso desde la vista

Respuesta

5

La Vista debe tener acceso al ViewModel, que envuelve el Modelo, ocultándolo de la Vista. Si necesita acceder a las propiedades del Modelo desde la Vista, obtenga ViewModel para exponerlas como propiedades a las que se puede vincular la Vista.

+0

Bien, pensé que la respuesta sería algo así. Pero todavía tengo algunos problemas. Cuando hago clic en una vista 1 de tipo A, quiero que guarde su modelo correspondiente en el modelo de vista. cuando hago clic en la vista 2 del tipo A, también quiero que guarde su modelo correspondiente en el mismo modelo de vista. hasta ahora, solo sé cómo salvarme (la vista) no el modelo:/ – Andreas

1

ViewModel no debería tener absolutamente ningún conocimiento de la vista. View debería usar DataBinding solo para que no tenga conocimiento del modelo o ViewModel.

Si necesita interactuar con la vista, todo debe ser a través de DataBinding. Solo en casos excepcionales debe recurrir al código subyacente.

Así que tienen una propiedad en el modelo de vista y unen a la vista.

+0

Quiere acceder al Modelo desde la Vista, y no al revés. –

0
public partial class MyView : Window 
{ 
    private MyViewModel aModel; 

    public MyView() 
    { 
     InitializeComponent(); 
     aModel = new MyViewModel(); 
     this.DataContext = aModel(); 
} 

Ahora la vista cambiará sus conexiones de datos de control que enlazan a las propiedades públicas de ViewModel.

1

MVVM no prohíbe que la Vista acceda al Modelo directamente. Eso es un malentendido común en la comunidad de MVVM.

Su ViewModel puede exponer el Modelo subyacente para que la Vista pueda acceder directamente al modelo.

Encuadernación:

{Binding Model.Title} 

código subyacente:

((MyViewModel)DataContext).Title 

La aplicación (EmailClient) muestra modelo de vista de la WPF Application Framework (WAF) muestra cómo acceder al modelo de la vista.

Cuestiones relacionadas