Je pense aussi qu'utiliser le pattern Mediator pour ouvrir une fenêtre dans le code-behind reste correct en terme Mvvm, du moins je crois.
Je m'inspire pour cela du toolkit mvvm light, mais il y a des chose qui ne me plaise pas trop et que je n'ai pas encore réussi à contourner dans ma petite librairie. Comme par exemple avoir ce genre de chose dans le code-behind :
On voit bien ici que le code-behind connait le MainViewModel, ce qui pour moi casse un peu la méthodologie Mvvm.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (message.Sender.GetType() == typeof(MainViewModel) && message.Target == typeof(MainWindow)) {
Ou encore dans le même esprit le viewmodel qui connait la vue (---> typeof(MainWindow)):
Bref j'essaie de palier à ça sans que ça soit une usine à gaz à mettre en place. Car comme tu aura pu le comprendre j'essaie de faire quelque de relativement simple à utiliser et à la fois efficace, car souvent j'ai tout de même vu des chose assez complexe qui risque de ne pas convenir à l'utilisation que l'on souhaite en faire chez mon client.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 var dialogMessage = new DialogMessage( this, typeof(MainWindow), Resources.MessageBoxText, r => DialogResult = r) {
Pour ce qui est de ta proposition, je vais y regarder cette après-midi si j'ai un peu de temps.
Thanks.
Partager