Dans une application MVVM, quelles options ai-je pour fournir des données ViewModel au moment du design, afin que nos concepteurs puissent réellement voir quelque chose dans Blend3 (et VS 2008). Comment faites-vous cela? Puis-je utiliser mc: ignorable pour cela?Fourniture de données ViewModel au design pour Blend et VS
Répondre
Oui, Expression Blend peut vous aider avec ceci. Utilisez l'onglet "Données" pour créer des exemples de données ayant la même forme que vos données de production. Lorsque vous créez la source de données, veillez à décocher "Activer les données d'exemple lorsque l'application est en cours d'exécution".
Sample Data http://www.smips.com/brad/stackoverflow/design-model1.jpg
Une fois que vous avez créé vos données d'échantillon, définissez la DataContext de votre page aux données d'échantillon dans le XAML. Cela permettra aux concepteurs de voir les exemples de données lorsqu'ils ouvrent la page dans Blend.
<navigation:Page DataContext={StaticResource MyFakeDesignData}
Dans le code pour le gestionnaire Loaded, écrire du code pour définir le DataContext au modèle réel. Étant donné que ce code ne sera exécuté que lorsque l'application est en cours d'exécution et que vous avez indiqué que vos données ne seront pas disponibles lorsque l'application est en cours d'exécution, cela signifie que l'application en cours d'exécution obtiendra les données réelles.
private void Home_Loaded(object sender, RoutedEventArgs e)
{
DataContext = new MyRealViewModel();
}
En utilisant VS2010, vous pouvez utiliser Design-Time attributes (fonctionne à la fois pour SL et WPF). J'ai souvent une maquette de données source de toute façon il est donc juste une question de:
Ajout de la déclaration d'espace de noms
xmlns: d = "http://schemas.microsoft.com/expression/blend/ 2008"
Ajout du contexte de données fictives aux ressources fenêtre/contrôle
<UserControl.Resources> < ViewModels: MockXViewModel x: Key = "DesignViewModel "/ > </UserControl.Resources>
données de conception en temps Réglage contexte
< Grille d: DataContext =" {Binding Source = {}} StaticResource DesignViewModel » > ...
Fonctionne assez bien.