MVVM est le plus couramment utilisé avec WPF car il est parfaitement adapté pour cela. Mais ce que sur Windows Forms? Est-il établi et approche communément utilisée / modèle de conception de ce genre pour Windows Forms trop? Celui qui travaille explicitement bien avec Windows Forms? Est-il un livre ou un article qui décrit bien le faire? Peut-être MVP ou MVC?
Réponses
Trop de publicités?J'ai essayé de MVP, et il semble que cela fonctionne très bien avec windows forms. Ce livre est un exemple de windows forms avec modèle MVP (échantillon de l'application de paie). L'application n'est pas complexe, mais vous donnera une idée sur la façon d'aller sur la création.
Agile Principes, Modèles et Pratiques en C#...
Vous pouvez obtenir le code source à la Le Code Source
EDIT:
Il existe deux variantes du modèle MVP (a) Passif de la vue et de la supervision du contrôleur
Pour les complexes de liaison de données de scénarios, je préfère aller avec la surveillance d'un contrôleur de schéma. Dans la supervision modèle de contrôleur de la liaison de données la responsabilité de repos avec vue. Donc,pour treeview/datagrid cela devrait être dans les différents points de vue, la seule vue agnostique de la logique devrait déménagé sur le présentateur.
Je vais vous recommandons d'avoir un coup d'oeil à la suite de MVP cadre MVC# - MVP cadre
Ne pas aller par le nom (c'est un MVP cadre).
Simple winforms MVP de la vidéo Winforms - MVP
Un exemple de traiter avec liste déroulante MVP - DropDownList
Simple treeview exemple de liaison (pauvre homme de liaison)... Vous avez un ajout à toute l'arborescence logique spécifique dans l'BindTree()....
Ci-dessous l'extrait de code.... pas testé, directement saisi de la pensée....
public interface IYourView { void BindTree(Modèle); } public class YourView : Système.De Windows.Formes, IYourView { privé Présentateur présentateur; public YourView() { présentateur = new YourPresenter(ce); } public override OnLoad() { présentateur.OnLoad(); } public void BindTree(Modèle) { // Liaison logique est ici.... } } public class YourPresenter { privé IYourView vue; public YourPresenter(IYourView vue) { c'.affichage = affichage; } public void OnLoad() { // Récupérer les données de service.... ou que ce soit soruce Modèle = service.GetData(...); vue.BindTree(modèle); } }
Comme on l'a déjà dit, j'ai toujours travaillé dans un modèle MVP lors de l'utilisation de Winforms. Mais le modèle de conception que vous utiliserez pas dire que vous allez utiliser. Il y a des charges de l'anti-modèle joint à titre de MVP.
Si vous souhaitez commence tout dans une bonne façon, vous devez utiliser le cadre pour la construction de smart client. Je vais donc vous recommandons d'utiliser que de la conception et des pratiques: Smart Client Software Factory http://www.codeplex.com/smartclient
Vous avez une discussion ici sur l'actuelle smart client cadres : http://codebetter.com/blogs/glenn.block/archive/2008/05/10/prism-cab-and-winforms-futures.aspx
PS: j'aime ce post sur le MVP des anti-modèles: http://blog.mattwynne.net/2007/06/13/mvp-smells/
Espérons que cette aide
Le Model-View-ViewModel (MVVM) Modèle est un modèle de conception. Par définition, un modèle de conception montre une solution commune dans le monde orienté objet et cette solution peut être appliquée à différentes plates-formes (WPF, WinForms, Java Swing, etc.). Je suis d'accord que MVVM est préférable de l'utiliser avec WPF car il tire parti de la forte liaison des capacités. Cependant, des Formes de Windows prend en charge la liaison de données.
Le WAF Windows Forms Adaptateur montre comment appliquer le Pattern MVVM dans une application Windows Forms.
Le post suivant introduit une variation de MVP/MVVM modèles de conception appelé MVP-VM, qui est un sur-mesure pour les winforms les applications qui nécessitent un test complet de la couverture et de l'utilisation de la liaison de données en tant que principal mécanisme pour maintenir la présentation mis à jour avec les données du modèle.
MVVM (Model View Vue Modèle) introduit une approche similaire pour la séparation de la présentation de la de données dans un environnement qui permet aux la liaison de données (WPF). Depuis .NET framework 2.0 offre déjà avancé infrastructure de liaison de données aussi permet moment de la conception de la liaison de les objets de l'application - le "Modèle de Vue' l'entité peut s'adapter assez bien dans la base de MVP de l'environnement.