Je suis relativement nouveau à WPF et MVVM et la chose la plus difficile que j'ai trouvée est comment commuter simplement un usercontrol ou une vue dans une application.Quel est le meilleur moyen de changer de vue/usercontrols dans MVVM-light et WPF?
Dans winforms, pour avoir un contrôle supprimer lui-même vous dirais simplement this.Parent.Controls.Remove (this);
Dans WPF, il n'existe aucun contrôle parent générique, vous devez le convertir en type spécifique (par exemple Grid), puis le supprimer.
Cela semble également rompre l'architecture MVVM. J'ai également essayé des modèles de données et des présentateurs de contenu, qui fonctionnent bien, sauf que je ne peux pas changer le datacontext du code, puisque le datacontext est toujours le viewmodellocator.
Les pages sont-elles un moyen acceptable de le faire dans WPF maintenant? Que se passerait-il si j'avais une grille avec un contrôle personnalisé et que je voulais l'activer en fonction d'une variable dans viewModel? Il semble que les tâches les plus simples ne peuvent pas être accomplies facilement dans WPF.
C'est à peu près ce que je recherchais pour. Si je comprends bien, vous pouvez utiliser DataTriggers pour lier à une valeur et ensuite basculer le contenu à la volée. Est-ce que cela fonctionne pour d'autres contrôles tels que ContentPresenter? – JReed
@JReed Bien sûr, je ne vois pas pourquoi pas. Dans le second exemple, je change la propriété 'ContentTemplate' d'un' ContentControl', mais vous pouvez changer presque n'importe quelle propriété sur n'importe quel contrôle basé sur un Trigger – Rachel
Que se passe-t-il si viewModel a besoin de données avant l'initialisation? un constructeur sans paramètre? –