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 basé?
- voir aussi stackoverflow.com/questions/654722/...
- cela semble être une bonne question. voir les votes et les étoiles..
- Comment est-ce pas constructif quand il est exactement la conversation que j'étais à la recherche d'? Modéré, pas de dicter!
- Donc, fondamentalement, MVVM pour WinForms est possible. Mais la plupart des gens préfèrent parler de la façon dont ils ont utilisé MVP/MVC dans le passé, au lieu de pousser les Winforms/MVVM idée en avant. Ou plutôt s'attarder sur la façon dont il est vraiment appelé Présentateur Modèle pas MVVM, et qu'il est doux MVVM est pour WPF.
- Je suis toujours déçu quand ce type de question est fermé comme "non constructif" depuis, comme une autre affiche déjà mentionné, ce type de discussion est exactement ce que je suis venu ici à la recherche d'. Les modérateurs, merci de prendre une vision plus libérale et à l'aise sur le "non constructive" bouton.
Vous devez vous connecter pour publier un commentaire.
J'ai essayé de MVP, et il semble que cela fonctionne très bien avec windows forms trop.
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 elle.
Agile Principes, Modèles et Pratiques en C#...
Vous pouvez obtenir le code source à la
Le Code Source
EDIT:
Il y a deux variantes du modèle MVP
(a) Passif vue et (b) la supervision du contrôleur
Pour des 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 pouvez ajouter n'importe quelle arborescence logique spécifique dans BindTree().
Ci-dessous l'extrait de code.... pas testé, directement saisi de la pensée....
Comme il 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ère que cette aide
La 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 en tant que bien.
La WAF Windows Forms Adaptateur montre comment appliquer le Pattern MVVM dans une application Windows Forms.
J'ai écrit sur 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 pour .NET Winforms
J'ai posé cette même question à deux de mes techniciens de co-travailleurs: est MVVM pour WindowsForms possible? Tous deux m'ont donné la même réponse: "Aucune façon! WindowsForms manque les riches reliures de WPF et Silverlight (Ponctuels, Unidirectionnelle, Bidirectionnelle, OnewayToSource) et il est également absente de l'TypeConverters."
Encore une fois, nous avons MVVM pour WinForms?
Oui, on peut. Nous avons toutes les pièces. Nous avons juste à les coller ensemble.
Je crois que MVP est un modèle bien adapté à WinForms de développement est en partie en témoigne son utilisation dans CABINE - Microsoft-cadre pour WinForms.
- Je utiliser le MVP en WinForms pour extraire le code de la Vue - parce que je ne peux pas tester le code de la Vue. Et aussi pour activer le code qui doit être réutilisés (ou est dupliqué) de rester hors de la Vue où il ne peut pas être partagée.
Je peux utiliser pour mon propre projet où j'utilise le modèle MVP ExceptionReporter.NET. Même si je suis sûre de ne pas l'utiliser parfaitement.
Vous avez mentionné MVVM de travail pour WPF - je crois que la raison est en raison de la forte liaison de données de soutien. Si vous n'étiez pas à l'aide de la liaison de données en WPF (et ce n'est certainement pas obligatoire) ensuite, vous pouvez choisir de MVP. Le point étant que MVP est un excellent choix pour toute application côté client. Et éventuellement d'un "mieux" de choix, même dans WPF, si vous prévoyez de partager du code entre les projets qui ne sont pas WPF.
Pour plus de preuves de la valeur de l'utilisation de MVP en WinForms voir Boodhoo vidéo de présentation sur l'utilisation de MVP:
http://www.bestechvideos.com/2008/06/29/dnrtv-show-14-jean-paul-boodhoo-on-model-view-presenter
Et un article MSDN par le même auteur à http://msdn.microsoft.com/en-us/magazine/cc188690.aspx
Ces pas sur le masquage de la modèle plutôt à définir précisément les interactions entre les différentes couches de l'application. Vous pouvez modifier le backend complètement et aussi longtemps que vous passez un Modèle par le biais de Bindtree de votre INTERFACE utilisateur de continuer à travailler.
Maintenant Modèle de classe peut être un mauvais choix d'un nom dans l'exemple que Rajesh donne. Il peut être TreeData, ou RecordsData. Cependant, vous le définir, il a tout ce dont vous avez besoin à l'aide du mécanisme de liaison de Winforms pour lier un contrôle spécifique pour les données sous-jacentes.
Le meilleur site pour rechercher ce type de matériel est ici. Martin Fowler a recueilli une vaste gamme de conception de l'INTERFACE utilisateur modèle d'entreprise et de modèles de conception.
De nouveau la clé pour cela est l'utilisation des interfaces de définir précisément comment chaque couche d'interagir les uns avec les autres.
Dans ma propre application (applications de CAO/fao utilisé pour exécuter la coupe des métaux machines) ma structure ressemble à ceci.
les interfaces qui interagissent avec les formes
à travers la forme de l'interface. L'
des vues spécifiques s'inscrire eux-mêmes
avec UIViewDLL Vues exécute la Commande des Objets trouvés
dans les bibliothèques de commandes qui interagissent
avec le Modèle.
les commandes de mise en œuvre de ICommand.
La commande qui interagissent avec
vues le faire par le biais des interfaces
exposés dans UIViewDLL.
utilisé par les commandes.
base de données des structures de mon
application. Pour moi ce sont des choses
comme matériel, cuttingpaths, la forme, la
les feuilles, les torches, etc.
les classes utilitaires utilisés par mon entreprise
qui couvrent différentes applications. Pour
exemple complexe de fonctions mathématiques.
Vous pouvez utiliser L'Architecture d'entreprise, Modèles et Pratiques comme point de départ, même s'ils sont un peu daté.
En vertu des Orientations Générales il est L'Architecture de l'Application pour .NET: la Conception d'Applications et de Services, ce qui est une bonne introduction à l' .NET des moyens et des couches de N-l'application de la couche.
le texte d'alt http://i.msdn.microsoft.com/ms954595.f00aa01%28en-us%2CMSDN.10%29.gif
Pour les plus formels "modèles", il est Solution D'Entreprise De Motifs À L'Aide De Microsoft .NET.
(source: microsoft.com)
Pour n'en nommer que quelques-uns,
La première bonne explication de l'INTERFACE utilisateur, conception de modèles que j'ai lu était en Jeremy Miller blog - La construction de Votre Propre CABINE. Il décrit les courants - Passif Vue, MVP, etc. et répond à certaines des façons de les mettre en œuvre en C#.
Vous pouvez essayer MugenMvvmToolkit qui permet l'utilisation d'un "pur MVVM" pour WinForms.
En raison du fait qu'il prend en charge les liaisons sur toutes les plateformes, tous les indigènes de liaison fonctionnalités disponibles pour WPF plate-forme disponible sur toutes les plateformes (inclure les WinForms).