Comment faire la liaison View / ViewModel dans les applications MVVM afin que Expression Blend puisse être utilisé?

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

  •  06-07-2019
  •  | 
  •  

Question

Lorsque vous utilisez le Modèle de MVVM Visual Studio , vos ViewModels sont liés aux DataContexts de vos vues dans App.xaml.cs à peu près comme ceci:

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

Et si vous utilisez la bibliothèque d'applications composites , vos vues et modèles de vues sont liés dans votre Bootstrapper / Container / ServerLocator, etc.

Dans tous les cas, lorsque vous ouvrez ces projets dans Expression Blend et ouvrez un fichier View XAML, le mélange d'expressions ne sait pas quel ViewModel appartient à quelle View car cette liaison est effectuée dans le code comme dans ci-dessus.

Vous pouvez bien sûr définir un DataObjectProvider dans votre XAML afin qu'Expression Blend sache où obtenir ses données pour cette vue, mais cela rompt MVVM et le schéma de découplage, car votre vue est désormais câblée à un ViewModel spécifique. Comment les concepteurs travaillent-ils normalement avec Expression Blend sur des projets qui ne sont pas une simple démonstration?

Ainsi, pour ceux d'entre vous qui utilisent le modèle MVVM et qui ont des concepteurs qui utilisent Expression Blend, comment maintenez-vous la structure de la liaison View / ViewModel de sorte que Expression Blend puisse savoir quel ViewModel appartient à quelle vue?

Était-ce utile?

La solution

Blend charge et exécute le code, même s'il n'exécute pas l'application. Chargez un exemple de DataContext if DesignerProperties.GetIsInDesignMode (...) dans un constructeur de vue ou une autre méthode plus appropriée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top