MVVM de Laurent Bugnion

http://www.galasoft.ch/
A propos de Laurent Bugnion et du MVVM Light Toolkit. Tout ce qu'il faut pour installer les DLL nécessaires au développement d'applications basées sur le modèle MVVM.

http://mvvmlight.codeplex.com/
Code source du MvvmLight Framework dans le CodePlex mais pour les télécharger vous devez être enregistré.

Petit tour rapide dans le Framework MVVM Light

On trouve des Solutions pour VS 2010 dans :
\\mvvmlight_0f4486b50609\GalaSoft.MvvmLight\GalaSoft.MvvmLight (NET4).sln

Command
  RelayCommand(Action execute)
  RelayCommand(Action execute, Func<bool> canExecute)
  RelayCommand(Action<T> execute)
  RelayCommand(Action<T> execute, Func<T, bool> canExecute)

Les commandes n'utilisent pas directement Action mais un objet du framework WeakAction
  public class WeakAction<T> : WeakAction, IExecuteWithObject

Messaging
  Design pattern mediator for communication beetween ViewModel
  GenericMessage<T> : MessageBase
  interface IMessenger
    void Register<TMessage>(object recipient, Action<TMessage> action, ...);
    void Send<TMessage>(TMessage message);
    void Unregister<TMessage>(object recipient);
  NotificationMessage : MessageBase

Parfois appelé Observer dans le sens ou l'on s'enregistre pour observer le comportement d'un objet ...

ObservableObject : INotifyPropertyChanged

ViewModelBase
  public abstract class ViewModelBase : ObservableObject, ICleanup

MvvmLight.Extras

Extension du framework MvvmLight de base.

Command
  EventToCommand : TriggerAction<DependencyObject>
  Il y a différentes versions : NET35, WPF, VS10, SL. Là encore la comparaison des versions donne une  indication des connaissances qu'il faut et de la complexité qu'il y a à écrire un tel code.

IoC
  Injection of controls, tient tient, on se rapproche encore de Prims
  using Microsoft.Practices.ServiceLocation;
  interface ISimpleIoc : IServiceLocator
  Laurent Bugnion prend le parti de créer son propre IOC Container basé sur un projet du codeplex Ici.

Compilations conditionnelles

#if SILVERLIGHT
#if NETFX_CORE
#if !WP71
#if !SL3
#if !WP71
#if !NETFX_CORE
#if !SILVERLIGHT
Cela donne une idée de la connaissance qu'il faut avoir et de la complexité qu'il y a à écrire un code pour ces différents environnements.

Blog

Le Blog de Laurent Bugnion est organiser de façon chronologique et se développe autour des différents évènements mondiaux auxquels il participe, c'est un peu difficile de s'y retrouver je trouve. Par exemple pour accéder aux exemples, il faut d'abord tomber sur l'article :

http://channel9.msdn.com/events/MIX/MIX11/OPN03
Deep dive in MVVM

Ensuite Laurent nous donne un lien vers son code source, on retourne dans son blog :

http://blog.galasoft.ch/archive/2011/04/13/deep-dive-mvvm-samples-mix11-deepdivemvvm.aspx

Le preview :

http://blog.galasoft.ch/archive/2011/04/14/mvvm-light-v4-preview-3-bl16-mix11-edition-mvvmlight.aspx

Mais si on clique alors sur Home pour tenter de lire d'autre articles, on est alors un peu perdu ... Remarquez, c'est un peu normal puisque l'organisation de l'information y est chronologique.

Samples

Les exemples développé par Laurent Bugnion au cours de ses présentations :

Laurent Bugnion at MIX10


Codes sources

http://www.galasoft.ch/blogs-all/Resources/MIX10/MIX10-MVVM-Samples.zip

Laurent Bugnion at MIX11

http://blog.galasoft.ch/archive/2011/04/13/deep-dive-mvvm-samples-mix11-deepdivemvvm.aspx

Codes sources

http://www.galasoft.ch/mvvm/resources/Samples/MIX11-DeepDiveMvvm-Samples.zip







Aucun commentaire:

Enregistrer un commentaire

Pour plus d'interactivité, n'hésitez pas à laisser votre commentaire.