Voilà je travaille en ce moment sur le pattern mvvm.

En fonction de composant existant je suis en train de me recréer une petite librairie simple pour utiliser le Mvvm dans mes projets.

Actuellement j'ai implémenté/adapté :

- RelayCommand et RelayCommandGeneric (pouvant passer des paramètres)
- ViewModelbase : Passage par des arbres d’expression Linq en modifiant légèrement la signature de OnPropertyChanged. Possibilité de faire ce genre de chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 public String Title
        {
            get
            {
                return title;
            }
            set
            {
                title = value;
                OnPropertyChanged(() => Title);
            }
        }
- Attached Behavior : permettant actionner une commande WPF lorsqu’un évènement est déclenché. Possibilité de gérer une collection d'événement :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
//xaml
<JadeMvvm:EventCommander.Mappings>
        <JadeMvvm:CommandEvent Command="{Binding BehaviorClosedCommand}"
                           Event="Closed"/>
    </JadeMvvm:EventCommander.Mappings>
 
//Code View Model
public void ClosedCommand(EventParameters e)
        {
            MessageBox.Show("Closed Command");
        }
- Il me reste pour l'instant la notion de communication par message entre différente vue.

- Par contre si je veut respecter l'indépendance des vues entre elle comment faire si je veut par exemple afficher une vue à partir d'un viewmodel sans connaitre cette vue mais uniquement son viewmodel. En gros faire un show sur une autre vue à partir d'un viewmodel.

Dans la même idée: est-ce que dans un viewmodel faire un MessageBox.Show("Message") est correct d'un point du vue du pattern mvvm ?

Merci par avance pour vos réponse.

Seb.