¿Cómo hacer un enlace View / ViewModel en aplicaciones MVVM para que se pueda usar Expression Blend?

StackOverflow https://stackoverflow.com/questions/1017276

  •  06-07-2019
  •  | 
  •  

Pregunta

Cuando utiliza la MVVM Visual Studio Template , sus ViewModels están vinculados a los DataContexts de sus Vistas en la App.xaml.cs algo como esto:

MainView mainView = new MainView();
mainView.DataContext = new MainViewModel();
mainView.Show();

Y si usa Biblioteca de aplicaciones compuestas , entonces sus Vistas y ViewModels están unidos en su Bootstrapper / Container / ServerLocator, etc.

En cualquier caso, cuando abre estos proyectos en Expression Blend y abre un archivo View XAML, Expression blend no sabe qué ViewModel pertenece a qué Vista ya que este enlace se realiza en código como en instancias anteriores.

Por supuesto, puede establecer un DataObjectProvider en su XAML para que Expression Blend sepa dónde obtener sus datos para esa Vista, pero esto rompe MVVM y el patrón de desacoplamiento ya que su Vista ahora está conectada a un ViewModel específico. ¿Es así como los diseñadores normalmente trabajan con Expression Blend en proyectos que son más que una pequeña demostración?

Entonces, para aquellos de ustedes que usan el patrón MVVM y que tienen diseñadores que usan Expression Blend, ¿cómo mantienen estructurado el enlace View / ViewModel para que Expression Blend sepa qué ViewModel pertenece a qué Vistas?

¿Fue útil?

Solución

Blend carga y ejecuta código, a pesar de que no ejecuta la aplicación. Cargue algunos DataContext de muestra si DesignerProperties.GetIsInDesignMode (...) en un constructor de vistas u otro método más apropiado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top