2009-08-26 4 views
3

Je pense à la conception d'une application WPF ou Silverlight. J'ai l'intention d'utiliser MVC (ou un autre modèle de conception)La liaison de données est un bon moyen de connecter une vue à un modèle

Sorcière jamais des modèles de conception que je choisis, j'ai besoin de se connecter pour voir le modèle (ou le présentateur) - est databinding un bon moyen de faire cela?

(Dans le passé, avec des applications WinForms J'ai trouvé que Databinding donner beaucoup de problèmes à long terme et ne remplit pas sa promesse. Il est la même chose avec WPF et Siverlight?)

Répondre

1

Je vous recommande de prendre un Regardez le modèle Model-View ViewModel (MVVM). Voici une très bonne vidéo, vous devriez jeter un oeil à: Jason Dolinger on Model-View-ViewModel. La liaison de données bidirectionnelle dans WPF est très puissante.

+0

Merci, je regarde cette vidéo maintenant. Bonne vidéo! Cependant, tout se casse si l'une des propriétés est renommée car il n'y a pas de vérification de la compilation de la liaison de données. –

0

La liaison de données dans WPF va bien au-delà de ce que vous pourriez obtenir dans Winforms. Il est intrinsèque à la plate-forme et répandue partout. Je dirais que vous ne pouvez pas comprendre WPF sans comprendre son système de liaison de données.

Ce n'est pas sans ses pièges, bien sûr. Les liaisons rompues ne sont souvent pas aussi évidentes que vous le souhaiteriez, mais des améliorations ont été apportées pour vous aider à identifier et signaler ces problèmes.

2

Oui, vous devez absolument utiliser la liaison de données. Alors que WinForms et ASP.NET ont toujours eu du mal à obtenir des données cohérentes et maintenables, Silverlight et WPF sont construits à partir de zéro pour le plaisir de la liaison de données.

  • La liaison est dans les deux sens si vous n'avez pas à écrire du code fastidieux de plomberie pour déplacer les données dans et hors de votre modèle. Il suffit de mettre en œuvre INotifable et c'est parti.
  • Les convertisseurs vous permettent d'écrire du code pour gérer la façon dont les choses sont liées si les valeurs par défaut ne fonctionnent pas. En utilisant des convertisseurs (qui sont simples à écrire), vous pouvez lier les paramètres booléens aux paramètres de visibilité, les chaînes aux images, les entiers aux couleurs d'arrière-plan, etc. Le ciel est la limite.
  • Les modèles tels que MVVM sont parfaits pour la prise en charge de la liaison de données enrichie dans WPF et Silverlight. MVVM vous permet d'avoir le meilleur des deux mondes: un code faiblement couplé et une liaison de données.
  • La liaison d'élément vous permet de lier la propriété d'un élément à la propriété d'un autre élément. Avec les convertisseurs, cela vous donne une puissance impressionnante pour faire des choses comme lier la position actuelle d'un contrôle de curseur à l'index sélectionné d'un contrôle de liste. Dans les deux sens. La liaison profonde signifie que vous pouvez lier à la propriété d'une propriété de votre modèle.
  • Pas que vous devriez toujours, mais vous pouvez.
  • La liaison est presque magique dans son dynamique -ness. Tant que votre modèle continue à prendre en charge les mêmes propriétés liées, la liaison continuera à fonctionner même si le type statique du modèle change. Liaison est également fou flexible. Vous pouvez lier à des collections, interfaces, objets complexes, (presque) tout ce que vous voulez.
  • DataContexts peut être utilisé pour configurer la liaison de données au niveau d'une page, d'un contrôle ou d'un conteneur. Les enfants du conteneur héritent alors du même contexte de données. Cela vous permet de lier une fois au niveau de la page, puis d'utiliser des chemins de liaison pour le reste de la page.
1

que ce soit WPF ou Adobe Flex ou Winforms, Databinding pose toujours des problèmes lorsque l'application devient complexe. Je préférerais éviter la liaison de données pour faciliter le débogage. Mais la liaison de données fonctionne tout autour de WPF que nous ne pouvons pas éviter. La liaison de données dans XAML enlève le contrôle au développeur.

Je pense que si nous conservons la liaison de données dans le code, il est beaucoup plus facile à déboguer. Imaginez, MVVM sans liaison de données, il semblera malpropre. Un modèle de conception qui tire parti de la technologie est bon, mais un design qui dépend totalement d'une caractéristique particulière est un désastre.

Questions connexes