TOC

This article has been localized into Portuguese by the community.

Sobre WPF:

WPF vs. WinForms

No capítulo anterior, nós falamos sobre o que é WPF e um pouco sobre WinForms. Neste capítulo, eu irei tentar comparar os dois, apesar de que eles servem para a mesma proposta, há uma grande diferença entre eles. Se você nunca trabalhou com WinForms antes, e especialmente se WPF é seu primeiro framework GUI, você pode pular este capítulo, mas se você estiver interessado nas diferenças então leia.

A primeira e mais importante diferença entre WinForms e WPF é o fato de que enquanto o WinForms é simplesmente uma camada superior dos controles padrões do Windows (por exemplo um TextBox), WPF é construído desde o esboço e não depende dos controles padrões do Windows em quase nenhuma situação. Isto pode parecer uma diferença sutil, mas realmente não é, o que você irá notar definitivamente se você tem trabalhado com um framework que depende do Win32/WinAPI.

Um grande exemplo disso é um botão com uma imagem e texto dentro. Isso não é um controle padrão do Windows, então WinForms não te oferece a possibilidade fora da caixa. Ao invés disso você terá que desenhar a imagem você mesmo, implementar seu próprio botão que suporte imagens ou use um controle de terceiros. Com WPF, um botão pode conter qualquer coisa porque ele essencialmente é uma borda com conteúdo e vários estados (ex: intocado, focado, pressionado). O botão do WPF é "sem aparência", como a maioria dos outros controles WPF, o que significa que ele pode conter uma série de outros controles dentro dele. Você quer um botão com uma imagem e algum texto? Basta colocar um Image e um controle TextBlock dentro do botão e pronto! Você simplesmente não tem esse tipo de flexibilidade nos controles padrões do WinForms, é por isso que existe um grande mercado para implementações de controles como botões com imagens e por ai vai.

A desvantagem dessa flexibilidade é que algumas vezes você terá que trabalhar duro para conquistar algo que era muito fácil com WinForms, porque era criado justamente para o cenário que você precisava. Pelo menos é assim que se sente no começo, quando você se vê criando templates para fazer uma ListView com uma imagem e algum texto bem alinhado, algo que com WinForms fará em uma única linha de código.

Esta foi apenas uma diferença, mas ao trabalhar com WPF, você irá descobrir que esta é a principal razão para muitas das outras diferenças - WPF é apenas fazer as coisas da sua própria maneira, para melhor ou para pior. Você não está mais restrito a fazer as coisas à maneira do Windows, mas ao obter este tipo de flexibilidade, você paga com um pouco mais de trabalho quando estiver apenas procurando fazer as coisas da maneira do Windows.

A seguir há uma lista completamente subjetiva das principais vantagens do WPF e do WinForms. Isto deve dar a você uma ideia melhor do que há pela frente.

Vantagens do WPF

  • É novo e portanto mais de acordo com os padrões atuais
  • A Microsoft está usando-o para uma porção de novas aplicações, por exemplo o Visual Studio
  • É mais flexível, então você pode fazer mais coisas sem ter que escrever ou comprar novos controles
  • Quando você precisar usar controles de terceiros, os desenvolvedores desses controles provavelmente estarão mais focados em WPF porque ele é mais novo
  • XAML torna mais fácil criar e editar sua GUI, e permitirá o trabalho ser divido entre um designer (XAML) e um programador (C#, VB.NET etc.)
  • Databinding, te permite ter uma separação mais clara do dado e layout
  • Usa aceleração do hardware para desenhar a GUI, para melhor desempenho
  • Ele te permite criar interfaces de usuário tanto para aplicações Windows quanto para aplicações web (Silverlight/XBAP)

Vantagens do WinForms

  • Mais velho e portanto mais experimentado e testado
  • Já existem um monte de controles de terceiros que você pode comprar ou conseguir de graça.
  • O designer no Visual Studio ainda é, através de escrita, melhor para o WinForms do que para o WPF, onde você terá mais trabalho à fazer você mesmo com WPF