63 votes

WPF et Winforms pour les débutants en .Net

Je suis très novice dans le cadre de Microsoft .Net.
Ma question est la suivante : lequel est le plus facile et le plus rapide à apprendre, Winforms ou WPF ?
Merci.

302voto

Filip Ekberg Points 22189

Ni l'un ni l'autre et Les deux sites La facilité est très subjective et dépend de vos antécédents. Tout d'abord, je veux montrer un exemple d'une application avec ce qui suit à la fois dans WPF et WinForms :

  • Une zone de texte pour la saisie
  • Un bouton pour effectuer un "traitement" de l'entrée.
  • Une étiquette qui affichera un résultat

WinForms

La fenêtre peut ressembler à ceci :

enter image description here

Le code pour cela est assez trivial et facile même pour un débutant :

private Button _myButton;
private Label _resultLabel;
private TextBox _inputTextBox;
public Form1()
{
    InitializeComponent();
    _myButton = new Button
    {
        Text = @"Process data",
        Top = 100
    };

    _inputTextBox = new TextBox();

    _resultLabel = new Label
    {
        Text = "",
        Top = 200
    };

    Controls.Add(_myButton);
    Controls.Add(_inputTextBox);
    Controls.Add(_resultLabel);

    _myButton.Click += Process_Click;    
}

void Process_Click(object sender, EventArgs e)
{
    _resultLabel.Text = string.Format("Your data is: {0}", _inputTextBox.Text);
}

Jusqu'à présent, nous n'avons touché à rien dans le designer.

WPF

Si nous copions et collons exactement le même code dans une nouvelle application WPF, il n'y a qu'une poignée de choses que nous devons changer, dont certaines :

  • Comment ajouter les contrôles à l'interface
  • Comment changer le texte d'une étiquette
  • Comment nous le positionnons depuis le haut (marge)

Cependant, ce ne sont que des choses différentes entre les deux, ce n'est ni plus difficile ni plus facile dans l'un ou l'autre. Voici donc à quoi ressemble la fenêtre en WPF :

enter image description here

Et le code est presque identique :

private Button _myButton;
private Label _resultLabel;
private TextBox _inputTextBox;
public MainWindow()
{
    InitializeComponent();

    _myButton = new Button
    {
        Content = @"Process data",
        Margin = new Thickness(0, 100, 0, 0)
    };
    _myButton.Click += Process_Click;

    _inputTextBox = new TextBox();
    _resultLabel = new Label
    {
        Content = "",
        Margin = new Thickness(0, 100, 0, 0)
    };
    var panel = new StackPanel();
    panel.Children.Add(_inputTextBox);
    panel.Children.Add(_myButton);
    panel.Children.Add(_resultLabel);   
    Content = panel;
}

void Process_Click(object sender, EventArgs e)
{
    _resultLabel.Content = 
                 string.Format("Your data is: {0}", _inputTextBox.Text);
}

Jusqu'à présent, WPF et WinForms semblent être aussi difficiles ou faciles à apprendre l'un que l'autre. Mais il ne s'agit que de l'approche code-behind, lorsque nous arrivons au designer, il y a une énorme différence.

WinForms

Lorsque vous développez des applications WinForms, vous faites glisser et déposez des contrôles sur votre surface et utilisez une fenêtre de propriétés pour modifier les propriétés de votre fenêtre. Cela ressemble à quelque chose comme ceci :

enter image description here

Vous pouvez donc glisser-déposer vos contrôles, modifier les propriétés de chacun d'entre eux et les fixer à l'endroit voulu, c'est assez simple, non ?

WPF

Qu'en est-il de WPF ? Est-il beaucoup plus difficile d'y faire la même chose ? Je ne pense pas :

enter image description here

La principale différence est que vous disposez d'une "fenêtre" supplémentaire en bas de l'écran. Cette fenêtre est une vue XML ( XAML ) de votre conception. C'est là que WinForms et WPF se distinguent l'un de l'autre. Mais tout comme vous pouvez éviter d'écrire du code de conception dans WinForms, vous pouvez éviter de le faire dans WPF aussi, en tant que débutant.

Quant aux nouveaux venus Je ne pense pas qu'il soit plus difficile ou plus facile d'apprendre l'un ou l'autre, lorsque l'on s'enfonce un peu plus dans la technologie choisie, bien sûr, elle devient plus complexe. Mais le chemin pour y arriver est tout aussi facile ou difficile, peu importe laquelle des deux vous choisissez.

Alors quand choisissez-vous l'un ou l'autre ?

Vous choisissez WinForms parce que :

  • Il existe depuis longtemps et vous disposez d'une réserve de contrôle large que vous pouvez utiliser.
  • Il y a beaucoup de bonnes ressources sur WinForms pour apprendre et obtenir de nouveaux contrôles.

Vous choisissez WPF parce que :

  • Vous pouvez créer une interface utilisateur plus riche, mais de nos jours, l'expérience de l'utilisateur est primordiale.
  • Vous voulez avoir le contrôle total de la conception de vos contrôles.
  • Vous voulez des applications riches et axées sur les données.
  • Vous voulez une interface utilisateur accélérée par le matériel.

Qu'en est-il des liaisons de données, des Design Patters et de tout le reste ?

Vous n'avez pas besoin de connaître les modèles de conception ni de savoir comment tout fonctionne pour créer une application utilisable, surtout pas en tant que débutant. Au fil du temps, vous devrez en apprendre davantage sur la technologie que vous choisissez. Les gens ont tendance à dire qu'il faut connaître MVVM pour utiliser WPF, mais ce n'est pas vrai. De même qu'il n'est pas vrai que vous devez connaître le modèle MVP pour créer des applications WinForms.

Les deux technologies peuvent gérer des contrôles basés sur des données riches, vous avez des vues de grille et autres dans les deux cas. WinForms dispose de fonctions de "glisser-déposer" très intéressantes pour la manipulation et l'énumération des données et WPF dispose d'un système de liaison de données très agréable.

Et si je ne veux pas choisir l'un ou l'autre ?

La beauté de la chose, c'est que vous n'avez pas à le faire ! Vous pouvez héberger des contrôles WinForms dans WPF et vous pouvez héberger des contrôles WPF dans WinForms. Cela signifie que si vous développez une application WinForms et que vous souhaitez tirer parti de WPF, c'est possible !

Alors, lequel est le plus facile ?

Ni l'un ni l'autre et les deux ! Pour un débutant, les deux peuvent sembler très similaires en surface, même si c'est très différent quand on va plus en profondeur.

Ils sont similaires mais tellement différents, le fait est que lorsque vous débutez, vous avez d'autres choses à penser que le fonctionnement du modèle de routage et la façon de s'adapter à MVVM.

XAML est-il mort ?

Non. XAML n'est pas mort. WP7 utilise Silverlight qui utilise également XAML. Même si, à l'avenir, une grande partie du développement pourra se faire avec HTML5, je doute que XAML soit sur le point de "mourir". Les gens ont demandé si WinForms allait mourir lorsque WPF est sorti et ce n'est pas le cas.

50voto

Marc Gravell Points 482669

Plus facile et plus rapide ? Presque certainement winforms.

WPF est plus difficile à quantifier - il est plus complexe et plus puissant, mais pour être honnête, j'ai perdu le fil de son avenir... Est-il mort ? Qui sait... Xaml a certainement une vie dans le mobile (WP7), cependant.

Cependant, je pense que vous feriez mieux de consacrer votre temps à l'apprentissage de l'interface utilisateur Web, en utilisant jQuery ou HTML5.

12voto

Windows Forms est certainement une technologie plus mature que WPF, je dirais. La documentation est abondante. Je pense que l'opposition entre WinForms et WPF est vraiment absurde, car je pense qu'ils ont chacun leur utilité.

Windows Forms est bien, et vous peut faire une interface utilisateur très attrayante avec elle. enter image description here

Mais je pense aussi que WinForms est très bien pour développer Applications de type "Windows Look and Feel alors qu'avec WPF, vous recherchez une expérience plus multimédia/riche.

Je développe avec WinForms depuis des années et je n'ai pas encore adopté WPF, car je n'en ai toujours pas besoin. Je peux réaliser tout ce que je veux avec WinForms. En fait, j'ai développé un cadre entier basé sur WinForms pour fournir une expérience riche, de type Windows, afin de pouvoir atteindre les résultats ci-dessus avec facilité.

Cependant, si j'avais besoin de créer une expérience multimédia riche, je passerais à WPF. Mais je suis dans le domaine du développement d'applications fonctionnelles comme les tooks, les logiciels de suivi des problèmes, les frameworks, etc.

En fait, voici un autre exemple de ce que j'ai fait avec WinForms. J'ai l'impression que je peux vraiment pousser WinForms à la limite, et avoir la capacité d'aller plus loin. J'aime le développement qu'il permet.

Je pense que lorsque les gens essaient de comparer WinForms à WPF en termes de conception, je ne suis pas sûr qu'ils comprennent vraiment ce qu'est un bon design . Il ne s'agit pas seulement de boutons fantaisistes, d'animations et de jolis rubans de commande.

Je ne suis pas ici pour critiquer WinForms ou WPF. Je pense que ce sont toutes deux d'excellentes technologies, mais je pense définitivement que WPF est plus orienté vers les applications riches. multimédia l'expérience du style.

De plus, je ne pense pas que l'un ou l'autre soit plus facile à apprendre. WPF vous plonge dans un modèle de style d'événement différent avec XAML, WinForms vous plonge dans le fait de faire plus de tout vous-même. Je pense à WinForms vs WPF dans une perspective C++/C#, mais dans le sens de l'interface utilisateur. WPF semble être un style de conception de plus haut niveau avec plus d'abstraction, ce qui rend beaucoup plus facile la conception d'une interface utilisateur attrayante. Plutôt WinForms, vous devez littéralement bien faire votre design en programmant le tout.

En conclusion (j'ai sauté partout), j'essaierais chacun d'entre eux et quelques exemples de projets, et je choisirais celui que vous préférez, et qui répond à vos besoins spécifiques. Je ne crois pas non plus que juste parce que vous avez des compétences en WinForms, vous allez "maintenir du code". Il y a encore des tonnes de choses qui sont développées dans WinForms aujourd'hui.

11voto

Teoman Soygul Points 17544

WinForms est massivement plus facile à apprendre (car il y a très peu à apprendre). Il sera très facile de développer des applications RAD. D'un autre côté, WPF demandera beaucoup plus d'efforts alors que votre application sera plus facile à maintenir (avec l'aide du paradigme MVVM).

8voto

Jethro Points 4522

Windows forms, serait plus facile à apprendre.

Voir cette lien pour un petit article sur WPF et Winforms.

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