C# transition entre GDI+ et WPF
Je suis considérant migrer mon application c# à partir de l'aide personnalisée GDI+ tirées des contrôles à une application WPF avec des contrôles personnalisés, etc. Je voudrais savoir ce qui est impliqué et à quoi s'attendre.
Des ressources sont des gens peuvent recommander que peut-elle aider? Ou, en effet, toutes les expériences personnelles qui pourraient être bénéfiques?
- Je serais curieux de savoir si vous décidez de faire le saut dans WPF ... et pourquoi ou pourquoi pas. Et si vous, quel est votre expérience après avoir fait un petit peu. Il serait grand si vous avez posté ici avec qui ... juste une idée.
Vous devez vous connecter pour publier un commentaire.
(Je m'excuse d'avance pour le long post ... il y a tellement de choses que je voulais transmettre ... j'espère que cela vous aide.)
C'est ce que nous faisons maintenant (migration d'une application Windows Forms avec l'utilisation lourde de la coutume (GDI+) tirées des contrôles WPF). En fait, mon rôle dans l'équipe a été de construire ces GDI+ contrôles ... et maintenant de mettre à la WPF ceux.
Je suis d'accord avec Bijington que de faire votre demande à 100% WPF est la voie à suivre ... si vous pouvez convaincre les pouvoirs en place pour aller dans cette voie. Cependant, nous sommes nous-mêmes la conversion de notre application Windows Forms en place, profitant de la WPF interop capacités. Il y a quelques limitations, mais dans l'ensemble il a été une approche efficace (et pas aussi frustrant que je l'aurais prévu).
Ce que je suggère, c'est que vous prenez l'un de vos GDI+ contrôles et de construire le même contrôle WPF. Et puis, quand vous avez fini, de le jeter et de le faire à nouveau. Vous toujours apprendre quelque chose pendant le premier effort ... et de découvrir qu'il existe une meilleure façon de le faire à la place. Je voudrais commencer avec un petit quelque chose ... un bouton personnalisé est un bon endroit pour commencer.
Faire le ci-dessus vous donnera un avant-goût de ce qui va être nécessaire pour tout ce que vous voulez faire.
Une chose que je voudrais vous avertir de WPF est la courbe d'apprentissage, surtout si vous venez d'un Windows Forms de fond ... et surtout si vous allez à la réalisation sur mesure de regarder des contrôles. Comme Abe a mentionné, c'est un monde complètement différent. WPF certainement apporte beaucoup de pouvoir, mais ce pouvoir a un coût d'apprendre à l'utiliser. Abe évoque la façon dont les contrôles personnalisés en WPF sont "lookless" et que leur "look" peut être fourni avec un ControlTemplate. Ceci est juste l'une des nombreuses façons dans WPF pour offrir personnalisé à la recherche des morceaux de votre interface utilisateur.
Permettez-moi d'énumérer certains de ces moyens supplémentaires:
Dans les Windows Forms, c'était comme s'ils vous a donné un coup de marteau (UserControl) et d'un tournevis (Contrôle). Cependant, dans WPF ... ils vous ont donné, l'ensemble de la boîte à outils avec tous les 100 outils. Et c'est en partie la raison pour laquelle le plus grand que la normale à la courbe d'apprentissage. Toutefois, vous pouvez maintenant prendre que vu que vous n'avez jamais eu avant et l'utiliser pour scier la fin d'un 2x4 au lieu d'utiliser le marteau et/ou d'un tournevis pour essayer de faire la même chose.
Ressources
(Les bonnes nouvelles sont qu'il ya beaucoup de ressources là-bas pour vous aider.)
Mes livres préférés sont de Charles Petzold livre et Adam Nathan livre. Cependant, le chapitre 18 de la Programmation de WPF par la Vend & Griffiths est vraiment excellente vue d'ensemble de l'objet, et en particulier de la couverture de la question: ai-je vraiment besoin d'un contrôle personnalisé?
Voici deux postes, en particulier, que vous voulez prendre un coup d'oeil à (un, deux).
MSDN
Je suis d'accord avec Bijington que le La documentation MSDN excellent.
Blogs
Dans un des deux StackOverflow messages que j'référence dans la section des Forums ci-dessus, j'ai un ensemble de blogs sur mon "must read" la liste. En particulier, je voudrais tout particulièrement le point sur les blogs de Pavan Podila et Kevin Moore. Kevin Moore utilisé pour être le programme WPF mangeoire pour les contrôles WPF et il a une belle série de contrôles appelés les WPF Sac-o-Astuces qui sont utiles, mais plus important encore, les contrôles que l'on peut apprendre.
Des échantillons, des Échantillons, et plus d'Échantillons
Il y a juste une tonne d'échantillons de là-bas. Presque trop! Je tiens à souligner à De la famille.Montrer (il a été créé comme un bout à l'échantillon de référence pour WPF) et je tiens à souligner à la WPF SDK échantillons et en particulier à la Contrôle de la Personnalisation des échantillons dans la section.
And then, when you are finished, throw it away and do it again
- J'ai utilisé pour ce faire il y a très longtemps, dans de Base, mais certainement pas plus... je vous suggère de ne pas le jeter, le C# + VS sont extrêmement propres respectueuses. Nettoyer la place. Cela prend beaucoup moins de temps dans mon expérience.Il y a un changement de paradigme dans la façon de développer les contrôles WPF. Au lieu de définir le comportement et l'aspect d'un contrôle, vous ne définissez le comportement voulu.
C'est l'aspect le plus difficile de la migration vers WPF. Votre classe de contrôle définit un contrat de comportement, et expose les propriétés qui seront utilisées pour le rendu, et un ControlTemplate est utilisé pour définir la façon dont le contrôle de l'air.
C'est aussi l'une des fonctionnalités les plus puissantes de WPF; à tout moment dans l'avenir, un consommateur de votre contrôle peut changer la façon dont il regarde sans changer la façon dont il se comporte. Cela permet beaucoup plus facilement de la thématisation de vos contrôles.
C'est en fait un projet sur lequel je travaille en ce moment même si j'ai été assez chanceux pour être en mesure de commencer à nouveau. Si vous pouvez faire cela, je vous le conseille vivement, évidemment en gardant les principales fonctionnalités de l'ancien système de contrôles mais de repartir à zéro. Il est toujours agréable de commencer à partir d'une base et de savoir où les choses ont mal tourné/droit auparavant.
Personnellement, j'ai trouvé le site web msdn extrêmement utile, si ce n'est stackoverflow est un très bon endroit pour la connaissance. Je serais heureux de donner des pointeurs si vous en avez besoin.
Aussi, si jamais vous avez des questions à propos de la liaison de données c'est l'endroit où aller:
bea costa
elle a couvert la plupart des trucs.
Sur une note nous avons connu une énorme amélioration de la performance avec l'utilisation de wpf plus de GDI.