Come eseguire l'associazione View / ViewModel nelle app MVVM in modo da poter utilizzare Expression Blend?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Quando si utilizza il MVVM Visual Studio Template , i tuoi ViewModel sono associati ai DataContexts di Views in App.xaml.cs in questo modo:

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

E se usi Libreria di applicazioni composite , allora hai le tue Viste e ViewModels vincolate insieme nel tuo Bootstrapper / Container / ServerLocator, ecc.

In ogni caso, quando apri questi progetti in Expression Blend e apri un file View XAML, Expression blend non sa quale ViewModel appartiene a quale View poiché questa associazione viene eseguita nel codice come in sopra le istanze.

Puoi ovviamente impostare un DataObjectProvider nel tuo XAML in modo che Expression Blend sappia dove ottenere i suoi dati per quella vista ma questo rompe MVVM e il modello di disaccoppiamento poiché la tua vista è ora cablata a un ViewModel specifico. È così che i designer lavorano normalmente con Expression Blend su progetti che sono più di una piccola demo?

Quindi, per quelli di voi che usano il modello MVVM e che hanno designer che usano Expression Blend, come si fa a mantenere strutturata la rilegatura View / ViewModel in modo che Expression Blend possa sapere a quale ViewModel appartiene a quale Views?

È stato utile?

Soluzione

Blend carica ed esegue il codice, anche se non esegue l'applicazione. Carica alcuni DataContext di esempio se DesignerProperties.GetIsInDesignMode (...) in un costruttore di viste o in un altro metodo più appropriato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top