171 votes

Conception de l'INTERFACE utilisateur Motif pour Windows Forms (comme pour WPF MVVM)

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?

98voto

rajesh pillai Points 5180

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);
}
}

14voto

alexl Points 4535

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

9voto

jbe Points 4629

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.

8voto

StackUnderflow Points 4290

Le meilleur article que j'ai lu est de Martin Fowler blog. Ici:

http://martinfowler.com/eaaDev/uiArchs.html

5voto

Aviad Ezra Points 81

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 .NET Winforms

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X