Comment puis-je arrêter mon ViewModel l'exécution de code dans le concepteur?
Je suis le développement d'un réseau d'application WPF avec le pattern MVVM et il semble que c'est de la course et de se connecter à des serveurs dans le concepteur.
Que je sais sur les IsInDesignMode bien, mais je ne suis pas sûr de savoir comment y accéder dans un ViewModel.
Vous devez vous connecter pour publier un commentaire.
Juste pour ajouter à ces suggestions, vous souhaiterez probablement de les optimiser pour un déploiement en production.
Si vous avez besoin de vérifier le mode de conception dans le ViewModel, vous devriez le faire que lorsque dans
DEBUG
mode, sinon la version finale devra toujours effectuer des contrôles inutiles.Lors du développement, si en mode création, vous pouvez sortir de la méthode (ou même écraser les quelques fausses données).
Mettre ce code à la première ligne de votre constructeur (ou quel que soit le code est appelé):
C#:
VB:
Je pense que je vais ajouter à ce que j'ai juste regardé quelque chose que j'ai repéré dans VS2015 et il fournit une solution de rechange. Dans le concepteur, il y a un bouton "Désactiver le code de projet".
Je suis en train de faire l'hypothèse que votre
ViewModel
est instanciée et à faire des trucs à partir de votre code derrière. Je sais ça casse pure MVVM, mais j'ai vu beaucoup de gens faire des trucs commeDataContext = new MyViewModel();
dans le constructeur dans le code derrière.Activant ce bouton devrait résoudre ce problème et aide à garder votre code plus propre. La caisse MSDN pour plus d'informations.
Voici l'image de la documentation MSDN, donc vous savez à quoi il ressemble. Je suis sûr que le lien va briser finalement, de toute façon.
J'ai repéré cette VS2015, mais pas sûr de l'édition de cette fonctionnalité a été ajoutée.
Comme une note de côté, il se dédouble également comme un bon moyen de recharger le concepteur. Mais un lent quand j'ai essayé. Votre kilométrage peut varier.
- Je utiliser l'instruction suivante autour de code que je ne peut mener à l'exécution de l'application et pourrait entraîner une exception dans le concepteur XAML.
Mis un moment de la conception de la source de données dans votre XAML comme ceci:
Laissez votre moment de la conception viewmodel hériter de la durée d'exécution viewmodel, mais en dérision les données du constructeur. Vous pouvez également avoir à faire quelque chose pour votre moment de l'exécution de la vue modèle, de sorte que le moment de la conception viewmodel ne pas exécuter le code d'accès aux données.
Tout dépend de la façon dont vous avez configuré la liaison entre la vue et la vue-modèle. Si elle commence par la vue dans le constructeur (ce qui semble probable étant donné les symptômes), vous pouvez vérifier IsInDesignMode à partir de là. Sinon, vous devez fournir un rapide aperçu de votre architecture (cadre ou si vous en utilisez un).