il n'y a pas de meilleur approche qu'une autre.
Parfois on peut, on on préfère intégrer le DataContext via le XAML, parfois on ne peut tout simplement pas dans le cas de ViewModels dépendants entre eux pour des scénarios complexes.
En fait, on peut faire du code-behind sans même violer les règles de MVVM.
Tout dépend de ce que l'on fait dans ce code behind, de sa complexité ...
Un designer qui a quelques bases peut très bien décider dans certains cas de faire un petit peu de code behind plutot que demander aux développeurs derrières de faire un "behaviors" ultra spécifique, super chiant à faire quand 5 lignes dans le code behind suffisent.
Personnellement j'ai tendance à préférer utiliser le code behind de ma window pour affecter les datacontext de mes usercontrols quand ils sont instanciés dès le démarrage, cela permet plus de libertés dans la conception de ton ViewModel. Mais là encore pas de méthode universelle.
En fait on peu dire que n'importe quel designer est quand meme capable de comprendre ou taper lui meme
this.DataContext = new MonViewModel();
Pour ton autre question, quand à savoir comment découper...
En fait fait d'abord toutes tes vues, pour voir à peut prêt comment ton interface sera.
Une fois que tu as toutes les vues, de là tu peut déduire le nombre de ViewModels car on a un viewmodel par vue.
Maintenant reste à voir le niveau de granularité que tu utilise pour définir une vue.
Une vue peut être considérée comme un composant simple, ou au contraire un UserControl regroupant nombre de controles et d'autres UserControls.
Mais là il n'y a pas de solution toute faite.
C'est à toi de décider comment tu compte procéder.
En général tu te rendra vite compte que ta granularité est mauvaise si tes ViewModels sont des usines à gaz et là il pourrait être nécessaire d'en ajouter sous des sous UserControls.
Après inutile de trop réfléchir aussi. Le problème avec les nouvelles approches qu'on ne maitrise pas, c'est qu'on ne veut tellement pas se planter que du coup on hésite à commencer, on ne sait pas trop par ou commencer, mais en fait il faut se jeter à l'eau, et au fur et à mesure des tutos corriger ce qui l'on à fait.
Si tu continue à vouloir comprendre sans pratiquer, tu continueras à te triturer les neurones pour rien et tu n'avancera pas.
Partager