Comparação Entre WPF e Windows Forms

Embed Size (px)

Citation preview

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    1/25

    [Mo na Massa Boa Ideia]

    Windows Forms x WPFComparao para saber qual delas amelhor para seu software

    Celular: (16) 9235-5171E-mail: [email protected]

    Diego Eduardo Ferreira([email protected])Cursando processamento de dados na FATEC, trabalha com programao desde 2007 com asp.net,Windows Forms e atualmente com WPF.

    Do que trata o artigo

    Apresentao das principais caractersticas das tecnologias Windows Forms e Windows PresentationFoudation. Exposio da comparao entre as mesmas, expondo o que semelhante e diferente, asvantagens e as desvantagens, e o objetivo, mostrar ao leitor casos em que cada tecnologia mais bemaplicada.Para que serve

    O Windows Forms uma tecnologia madura e possui muitas ferramentas, s que com o passar dasverses do framework, este no sofreu muitas mudanas. Por exemplo, a customizao de controles, pormais que se mudem as caractersticas, eles sempre possuem a aparncia do padro Windows. O WPFpermite a customizao total dos controles, podendo fugir do padro do sistema operacional. Porm,para tal, requer um poder de processamento maior do computador.Em que situao o tema til

    Quando chegar o momento de escolher em qual tecnologia utilizar, fundamental conhecer as principaiscaractersticas de cada uma das plataformas para a aplicao ficar agradvel tanto para o desenvolvedorcomo para o usurio final.

    Resumo do DevMan

    O Windows Forms foi a primeira soluo da Microsoft para aplicaes desktop. Posteriormente, no .netframework 3.0, surgiu o Windows Presentation Foundation, o WPF. Dependendo do software a serdesenvolvido, a escolha errada da tecnologia a ser aplicada pode atrapalhar sua produo. Ento, necessrio conhecer os pontos fortes e fracos de cada uma das tecnologias para, assim, maximizar odesenvolvimento do software e atender as necessidades do cliente.

    O .net framework, desde a primeira verso, permitiu que os desenvolvedores criassem aplicaestanto web como desktop. Na verso web, trouxe o ASP.net, uma verso do asp utilizando as bibliotecasdo framework. Na verso desktop, trouxe o Windows Forms, que lembra as aplicaes desenvolvidos

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 5/25/2018 Compara o Entre WPF e Windows Forms

    2/25

    em IDEs como o Delphi, e tambm trouxe o lanamento do C#, uma nova linguagem derivada do C,totalmente orientada a objetos, que at hoje disputa um lugar no mercado com o Java.

    Nas ultimas verses do .net, especificamente da 3.0 ou superior, a Microsoft trouxe o WindowsPresentation Foundation, o WPF, uma nova maneira de desenvolver aplicaes, tanto para desktop,como para web. A sua interface baseada em uma linguagem denominada XAML, um tipo de XML,que faz com que a aplicao desenvolvida possa ser executada tanto no navegador como no Windows.Posteriormente, ser abordado profundamente sobre este assunto.

    Atualmente, os clientes pedem softwares de qualquer espcie, desde simples calculadoras atprogramas que executam complexas regras de negcio. Se o software ser desktop e ser desenvolvidocom o .net framework, qual a melhor opo para criar a aplicao? Windows Forms ou WPF? Emseguida, surgem vrias dvidas, tais como: com qual das tecnologias ser suprida a necessidade docliente e da melhor forma? Com qual das tecnologias o software ser produzido mais rpido? Se fortrabalhar em equipe, qual conceito permite melhor o trabalho em conjunto?

    O objetivo deste artigo destacar os pontos fortes e fracos do Windows Forms e do WPF,apresentando um caso onde a aplicao favorvel utilizao do primeiro e outro caso onde aaplicao ser mais bem elaborada com a utilizao do segundo.Um pouco sobre o Windows Forms

    O Windows Forms existe no .net framework desde a primeira verso. Para a verso desktop, foia nica soluo at a verso 3.0, quando surgiu o WPF. Com o objetivo de reproduzir aplicaesWindows, o Windows Forms lembra aplicaes desenvolvidas em IDEs como Delphi, que tambmutilizam APIs do sistema operacional.

    Uma API (Application Programming Interface, ou em portugus, Interface de Programao deAplicativos) so cdigos que esto no sistema operacional que so utilizados para criar uma aparnciavisual dos elementos do padro de interface do usurio, tais como botes, caixas de texto, caixas deseleo e assim por diante. Como resultado, esses componentes so essencialmente no customizveis,muito pelo contrario, so bem parecidos com o do sistema operacional em questo.

    Na questo da customizao, os controles, que so os componentes de entrada e sada utilizadospelo Windows Forms, possuem caractersticas pouco customizveis, permite apenas cor, tamanho defonte, cor de fonte, estilo da fonte entre outras. Por exemplo, se o desenvolvedor precisar deixar umboto com o formato diferente vai precisar fazer ou procurar uma imagem do boto que quiser, e aplicarao boto na propriedade Image. No uma opo muito vivel, j que imagens consomem bastantememria para renderizar. A figura 1ilustra um formulrio com um campo desenvolvido em WindowsForms.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    3/25

    Figura 1. Ilustrao de um formulrio em Windows Forms

    Todo formulrio, quando criado peloVisual Studio, possui 3 arquivos: um com a extenso .cs, outro coma extenso .Designer.cs e ainda outro com a extenso .resx. O primeiro a classe que define ocomportamento do formulrio, ou seja, nesta classe so programados os eventos do prprio formulrio edos controles contidos nele. O segundo, com a extenso .Designer, a classe que contem oscomponentes do formulrio: os botes, as caixas de textos, os labels entre outros. Alm de definir asinstancias dos controles, armazena o valor das propriedades atribudas em modo design, por exemplo, otexto que estar no label, a posio absoluta na tela, o tamanho, entre outras. Possui tambm mtodos decriao e remoo do formulrio na memria, com os mtodos InitializeComponent e Dispose,respectivamente. O primeiro e o segundo arquivo contem classes partial, ou seja, so dois arquivosque contem o mesmo nome de classe, e elas se completam se transformando em uma classe s quando

    compiladas. O terceiro arquivo so os resources do formulrio, ou seja, um arquivo de recurso quecontem informaes que podem ser utilizados por ele, como strings, imagens, cones, entre outrasopes. A listagem 1mostra o cdigo gerado pelo prprio framework para criar o formulrio, ou seja, aclasse com extenso .Designer.

    Listagem 1:Cdigo gerado para criao do formulrio da Figura 1namespaceListagem1{

    partialclassForm1{

    //////Required designer variable.///

    privateSystem.ComponentModel.IContainercomponents = null;

    //////Clean up any resources being used.//////true if managed resources should be disposed;

    otherwise, false.protectedoverridevoidDispose(booldisposing){

    if(disposing && (components != null)){

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    4/25

    components.Dispose();

    }base.Dispose(disposing);

    }

    #regionWindows Form Designer generated code

    ///

    ///Required method for Designer support - do not modify///the contents of this method with the code editor.///privatevoidInitializeComponent(){

    this.label1 = newSystem.Windows.Forms.Label();this.textBox1 = newSystem.Windows.Forms.TextBox();this.SuspendLayout();//// label1//this.label1.AutoSize = true;this.label1.Location = newSystem.Drawing.Point(13, 13);this.label1.Name = "label1";this.label1.Size = newSystem.Drawing.Size(84, 13);this.label1.TabIndex = 0;this.label1.Text = "Nome do cliente";//// textBox1//this.textBox1.Location = newSystem.Drawing.Point(16, 30);this.textBox1.Name = "textBox1";this.textBox1.Size = newSystem.Drawing.Size(256, 20);this.textBox1.TabIndex = 1;//// Form1//

    this.AutoScaleDimensions = newSystem.Drawing.SizeF(6F, 13F);this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;this.ClientSize = newSystem.Drawing.Size(284, 262);this.Controls.Add(this.textBox1);this.Controls.Add(this.label1);this.Name = "Form1";this.Text = "Form1";this.ResumeLayout(false);this.PerformLayout();

    }

    #endregion

    privateSystem.Windows.Forms.Labellabel1;privateSystem.Windows.Forms.TextBoxtextBox1;

    }}

    Nota: Em alguns artigos ou tutoriais que esto na internet, o autor, quando passa o cdigo do queest ensinando, joga os controles (classe .Designer.cs) e a implementao de eventos (classe .cs) tudoem uma nica classe. Isso possvel, j que as classes .Designer e .cs so partial.Ento, o cdigofunciona e somente o no ficar no padro que o framework gera.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    5/25

    Para mudar as propriedades dos controles, clique sobre o controle e pressione F4 ou passe omouse sobre a aba Properties do Visual Studio, como indica a figura 2.

    Figura 2.Aba Properties mostrando aspropriedades da caixa de texto

    bastante simples montar um formulrio com Windows Forms: basta passar o mouse sobre aaba Toolboxe clicar sobre o controle desejado e arrastar para o formulrio, como mostra a figura3.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    6/25

    Figura 3.Inserindo um controle no formulrio em Windows Forms

    O principal namespace das aplicaes Windows Forms o System.Windows.Forms. Dentrodeste namespace, alm dos controles do formulrio, esto as classes responsveis por desenhar o mesmona tela do computador.O que o Windows Presentation Foundation

    Segundo o autor Moroney, o Windows Presentation Foundation um subsistema de exibiogrfica para Windows. Resumidamente, o WPF combina o melhor do antigo mundo de desenvolvimentoWindows com inovaes para construes modernas e interfaces de usurio graficamente ricas.

    Sua origem se d na verso 3.0 do .NET framework 3.0 e constantemente vem sofrendomodificaes e incorporados novos complementos com novidades para os desenvolvedores. Os recursosesto ficando cada vez mais inovadores.

    Subjacentes a novas funcionalidades, o WPF uma nova e poderosa infra-estrutura baseada emDirectX. O DirectX uma API multimdia que oferece uma interface padro para interagir comelementos grficos, placas de som e dispositivos de entrada, entre outros.

    Isto significa que possvel criar efeitos grficos ricos sem sobrecarregar a desempenho, problemacorriqueiro com a utilizao de Windows Forms. Na verdade, obtm-se recursos avanados, tais como

    suporte para arquivos de vdeo e contedo 3D. Usando estes recursos, possvel criar interfaces deusurio estilizadas e efeitos visuais que no seriam possveis utilizando Windows Forms.O WPF inclui controles padro para se familiarizar com os desenhos de texto, bordas e

    preenchimento de fundo. Como resultado, a tecnologia pode proporcionar caractersticas mais poderosasque permitem alterar o modo como o contedo da tela exibido. possvel reescrever controlescomuns, como botes ou caixas de texto, muitas vezes sem escrever qualquer cdigo, e obter umcontrole bem mais atraente e que chame a ateno do usurio.

    Alm disso, permitido usar transformaes de objetos para girar, esticar e deformar alguma coisana interface de usurio. E como o ncleo WPF renderiza o contedo de uma janela como parte de umanica operao, pode-se manipular ilimitadas camadas de sobreposio de controles, mesmo que estes

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    7/25

    controles sejam irregularmente desenhados e parcialmente transparentes. A figura 4mostra um simplesformulrio feito em WPF.

    Figura 4.Formulrio simples desenvolvido em WPF

    Aparentemente, o formulrio desenvolvido em WPF pior na questo visual do que o formulriofeito em Windows Forms. O que acontece que a window, ou seja, o formulrio WPF, quando criada,vem com uma aparncia padro, no muito atraente. Porm, com leves modificaes, como por

    exemplo, um gradiente no fundo da window, cor para a fonte do label e bordas arredondadas para acaixa de texto, pode se obter um formulrio muito melhor, como mostra a figura 5.

    Figura 5.Window com a aparncia padro modificada.

    Os formulrios em WPF so desenhados a partir de um XAML, abreviao para ExtensibleApplication Markup Language e pronunciado zammel. Embora o XAML seja uma tecnologia quepode ser aplicada a muitos problemas de domnios diferentes, o seu papel principal construir interfacesde usurio com WPF. A listagem 2 mostra o documento XAML do formulrio da forma simples, semestilizao.

    Listagem 2:Window sem estilizao

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    8/25

    Em outras palavras, documentos XAML pode definir a disposio dos painis, botes e controlesque compem as janelas em uma aplicao WPF, como tambm pode definir estilos para os mesmos.Estes estilos so semelhantes ao CSS (Cascade Style Sheet) da web.

    muito til a utilizao do recurso de estilizao, pois ao invs de mudar cada propriedade doscontroles para aplicar alguma caracterstica, somente necessrio mudar o estilo definido para ocontrole e ele automaticamente se aplicar.

    A listagem 3 mostra a window simples, porm, com aplicao de estilos nela mesma e noscontroles contidos nela. importante destacar que uma boa prtica na utilizao dos estilos mante-losno nvel mais alto possvel, ou seja, nunca dentro do prprio controle, mas sim na window ou ainda sepossvel, em um arquivo denominado Resource Dictionary, que tambm um arquivo XAML e trabalhaarquivo CSS da web, centralizando os estilos dos controles em um nico lugar.

    Listagem 3:Window e seus controles com estilizao

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    9/25

    pouco provvel que se escreva XAML na mo. Ao invs disso, pode-se usar uma ferramenta quegere o XAML. Para um design grfico, esta ferramenta pode ser o programa Microsoft ExpressionBlend, mas para um desenvolvedor, pode-se usar o prprio Visual Studio. Ambas as ferramentastrabalham tranquilamente com o XAML, podendo-se criar uma interface de usurio bsica com o VisualStudio e ento dar acabamentos com grficos personalizados no Expression Blend.

    Na verdade, esta capacidade de integrar o fluxo de trabalho entre desenvolvedores e designers uma das principais razes que fez a Microsoft criar o XAML. Tanto o Visual Studio como noExpression Blend, a construo do formulrio pode ser do modo arrastar e soltar, como no Windows

    Forms.Quando uma Window criada pelo Visual Studio, so gerados 2 arquivos: um com a extenso

    xaml e outro com a extenso .xaml.cs. O primeiro o contedo visual da interface, sendo somente textoXAML. J o segundo, o arquivo que controla o comportamento dos controles da tela, semelhante classe .cs do Windows Forms.

    Para se alterar as propriedades dos controles numa aplicao WPF e adicionar controles aosformulrios, o mesmo caminho do Windows Forms.

    O namespace principal do WPF o System.Windows. Alm dos controles contidos dentro destenamespace, contm classes que auxiliam nas animaes e efeitos.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    10/25

    O WPF no bom somente visual, melhora tambm a manipulao dos dados, com o avanado DataBinding. Data Binding o caminho que conecta a interface da aplicao e a parte lgica do sistema, coma atualizao automtica do valor da sua fonte de dados. Por exemplo, supondo que um TextBox estejaligado com a propriedade de alguma classe, e, se o usurio mudar o valor no controle, automaticamenteo valor da propriedade na classe ser alterado, sem necessitar de ficar preenchendo a toda interao.

    No Windows Forms existe o Data Binding, porm, no to eficaz e de to fcil uso como noWPF. Principalmente na questo dos tipos dos dados bem mais complicado de se tratar no WinFormsdo que no WPF. A figura 6 ilusta como funciona a conexo do Data Binding entre o controle deinterface (objeto de dependncia e propriedade de dependncia, por exemplo, controle TextBox e apropriedade Text) e a sua fonte (objeto comum e uma propriedade da classe, por exemplo, classe Pessoapropriedade Nome). Mostra tambm os tipos de ligao que o WPF disponibiliza, que seria OneWay, ouseja, do objeto de negcio para o controle na interface, TwoWay, que permite a ligao tanto do controleda interface para objeto de negcio e vice-versa, e OneWayToSource, que a direo dos dados se dentre o controle da interface para o objeto de negcio.

    Figura 6.Ilustrao do Data Binding no WPF

    Comparao entre WPF e WinFormsAmbas as tecnologias em alguns aspectos, levam vantagem uma sobre a outra, assim como

    tambm levam desvantagens. Enquanto o WPF fornece uma aplicao mais bonita visivelmente e, emalgumas situaes, permite que o fluxo de dados trafegue de maneira fcil para o desenvolvedor, oWindows Forms permite que uma aplicao seja criada rapidamente, talvez no muito chamativa nocriterio visual, mas de desempenho maior em algumas situaes e que exige um computador maissimples que uma aplicao WPF.

    Porm, nem tudo feito de vantagens. O WPF exige um computador mais robusto para aaplicao rodar mais tranquila, principalmente quando os efeitos so pesados, e, como utiliza recursosdo hardware, como da placa de video, necessrio um hardware melhor para a aplicao corresponderem termos de desempenho. No que uma aplicao no rodar em computadores de placa de vdeoonboard, mas, seu desepenho no sera o mesmo do que instalado em um computador com hardwaremelhor.

    J o Windows Forms, apesar de no necessitar de um computador to robusto, no oferece grandesrecursos visuais e de manipulao de dados atraentes para o usurio, como o WPF. Ento, uma aplicaoWindows Forms mais trabalhosa em termos de negcio do que a aplicao WPF. Porm, a aplicaoWPF bem mais trabalhosa na questo visual do que a aplicao Windows Forms, e isso implica notempo de desenvolvimento da aplicao, tornando a construo do software um pouco mais demorada.A tabela 1mostra as mesmas caractersticas para as tecnologias e indicando se bem aproveitada ouno por cada uma delas.

    Caracterstica WPF Windows Forms

    Necessita de um hardware maisatual/robusto

    Sim No

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    11/25

    Visual sempre comcaractersticas do sistema

    operacional

    No Sim

    Facilidade de manipulao dosdados

    Sim No

    Criao fcil e rpido deformulrios

    No Sim

    Desenvolvimento rpido No Sim

    Comparao entre WPF e WinForms em uma aplicaoSomente comparaes conceituais no so suficientes para deixar claras as diferenas entre as

    tecnologias desktop da Microsoft. A ideia mostrar um formulrio feito em Windows Forms e o mesmoformulrio desenvolvido em WPF. O contexto um cadastro de clientes simples, com ligaes noscampos por DataBinding. O tempo de construo de cada formulrio ser levado em conta tambm.

    A figura 7 ilustra a estrutura do formulrio que ser desenvolvido. A figura 8 ilustra o diagramade classes da aplicao, no caso, somente a classe cliente. A listagem 4 mostra o cdigo da classecliente, com as propriedades criadas.

    Figura 7.Estrutura do formulrio que ser constrdo em WinForms e WPF

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    12/25

    Figura 8.Diagrama de classes da aplicao

    Listagem 4: Classe cliente e suas propriedades.usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;

    namespaceCadastroCliente.Modelo{

    publicclassCliente{

    publicstringNome { get; set; }publicstringCPF { get; set; }publicDateTimeDataNascimento { get; set; }publicstringEndereco { get; set; }publicintNumero { get; set; }

    publicstringComplemento { get; set; }publicstringCidade { get; set; }publicstringBairro { get; set; }

    }}

    O DataBinding, por padro, notifica a alterao do objeto aps o foco sair do controle. Porexemplo, a propriedade nome do cliente s receber o valor do TextBox que representa o nome docliente somente quando este perder o foco. Para um melhor controle, legal o objeto ser preenchidoconforme o contedo do controle for alterado, ou seja, conforme o usurio digite o nome do cliente, oobjeto j vai sendo preenchido.

    Para isto, necessrio implementar a interface INotifyPropertyChanged do .Net Framework na

    classe cliente, e, em cada set das propriedades, chamar o evento implementado pela interface. Alistagem 5 mostra a classe cliente modificada, com a definio de propriedades no mtodo antigo, ouseja, sem ser auto-property, e com o evento da interface e o mtodo que notifica a mudana de valor dapropriedade.

    Listagem 5: Classe cliente implementando com o recurso de notificao de alterao de valordas propriedades

    usingSystem;usingSystem.Collections.Generic;

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    13/25

    usingSystem.Linq;usingSystem.Text;usingSystem.ComponentModel;

    namespaceCadastroCliente.Modelo{

    publicclassCliente: INotifyPropertyChanged{

    privatestring_nome;privatestring_cpf;privateDateTime_dataNascimento;privatestring_endereco;privateint_numero;privatestring_complemento;privatestring_bairro;privatestring_cidade;

    publicstringNome{

    get{ return_nome; }set{

    _nome = value;OnPropertyChanged("Nome");

    }}

    publicstringCPF{

    get{ return_cpf; }set{

    _cpf = value;OnPropertyChanged("CPF");

    }

    }

    publicDateTimeDataNascimento{

    get{ return_dataNascimento; }set{

    _dataNascimento = value;OnPropertyChanged("DataNascimento");

    }}

    publicstringEndereco{

    get{ return_endereco; }set{

    _endereco = value;OnPropertyChanged("Endereco");

    }}

    publicintNumero{

    get{ return_numero; }

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    14/25

    set{

    _numero = value;OnPropertyChanged("Numero");

    }}

    publicstringComplemento

    {get{ return_complemento; }set{

    _complemento = value;OnPropertyChanged("Complemento");

    }}

    publicstringCidade{

    get{ return_cidade; }set{

    _cidade = value;OnPropertyChanged("Cidade");

    }}

    publicstringBairro{

    get{ return_bairro; }set{

    _bairro = value;OnPropertyChanged("Bairro");

    }

    }

    #regionINotifyPropertyChanged Members

    publiceventPropertyChangedEventHandlerPropertyChanged;

    // Mtodo que notifica a alterao da propriedade pelo eventoprotectedvoidOnPropertyChanged(stringname){

    PropertyChangedEventHandlerhandler = PropertyChanged;if(handler != null){

    handler(this, newPropertyChangedEventArgs(name));}

    }#endregion

    }}

    Construo da interface do formulrioDepois de definido a estrutura do objeto que representar o conceito a ser tratado, no caso, o

    cliente, s desenhar o formulrio em cada uma das tecnologias. Lembrando que no Windows Forms oDataBinding realizado no code-behind do formulrio. J no WPF, a ligao definida no prprio

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    15/25

    XAML do controle. A figura 9 ilustra o formulrio em WinForms e a figura 10mostra o formulriocriado em WPF, ambos no estilizados, ou seja, sem aplicao de efeitos visuais nenhum.

    Figura 9.Formulrio de cadastro de clientes em Windows Forms

    Figura 10.Window representando o cadastro de clientes desenvolvida em WPF

    Como o formulrio bem pequeno, a construo foi bem rpida, sendo aproximadamente 6minutos para Windows Forms e 10 minutos aproximadamente para o WPF. Agora, o prximo passo sera estilizao das telas, nada muito enfeitado, somente para tirar o padro do sistema operacional doscontroles, porm, utilizando todos os recursos de cada tecnologia.

    No Windows Forms, difcil a estilizao, pois cada propriedade a ser modificada tem que seratribuda para cada controle, a no ser que vrios controles do mesmo tipo sejam selecionados ou os

    efeitos sejam atribudos via cdigo. Outro caminho a criao de um Custom Control, que uma classeque herda de controle especifico e l o desenvolvedor trata a parte de estilizao via cdigo. Paraprojetos grandes, esta seria a melhor soluo, mas como no o caso atual, a customizao ser feita noscontroles mesmo.

    A figura 11mostra o formulrio depois de aplicado cores e fontes aos controles. O tempo mdiolevado foi de 15 minutos para realizar a tarefa.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    16/25

    Figura 11. Formulrio de cadastro de clientes com customizaes na interface em WinForms

    No WPF, dependendo do efeito a ser aplicado, difcil a estilizao tambm. Porem, parapequenos efeitos, muito til, principalmente pela parte que os estilos podem ser atribudos por tipo decontrole e no necessita ir de controle a controle atribuindo cada propriedade para modificar o estilo domesmo.

    A figura 12apresenta a Window que representa o formulrio de clientes desenvolvido em WPFestilizada. O tempo aproximado utilizado foi de 40 minutos. Os detalhes so bem mais reais em relaoao WinForms, como por exemplo, a borda arredondada, utilizao de transparncia e gradientes. Porm,o custo disso foi uma maior demora na construo da estilizao.

    Figura 12.Window do cadastro de clientes estilizada

    Ligao e manipulao de informaesCom a interface pronta, a ultima parte da comparao a ligao dos DataBindings em ambas as

    tecnologias. No Windows Forms a ligao feita no code-behind do formulrio, em qualquer evento,

    mas no exemplo, ser implementado no Load, e a declarao semelhante listagem 6.A ligao feita no controle, a partir da propriedade DataBindings, que uma coleo da classe

    Binding. O mtodo que adiciona o binding nesta coleo, entre vrios overloads, o mais apropriado oapresentado na listagem, pois o que permite alterar o modo de notificao.

    Na sobrecarga utilizada, os parmetros na sequencia so: a propriedade que vai ser utilizada nocontrole, o objeto que ser a fonte da informao, a propriedade do objeto fonte que serpreenchida/recuperada, permisso de formatao de dados, e o enumerador que representa o tipo denotificao de alterao.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    17/25

    Listagem 6: Declarao do DataBinding no Windows Forms

    controle.DataBindings.Add(newBinding("PropriedadeDoControle", objetoFonte,"Nome da propriedade no objeto", true, DataSourceUpdateMode.OnPropertyChanged);

    J no WPF, a ligao dos controles com a fonte de dados pode ser tanto no XAML como no code-behind. No exemplo, ser utilizado o primeiro mtodo, ou seja, definio no prprio XAML. Adeclarao segue na listagem 7.

    A definio da ligao realizada no atributo da tag do controle desejado. Semelhante aoWindows forms, informado o nome da propriedade do objeto que ser fonte de dados e o modo danotificao de atualizao da informao.

    Listagem 7: Ligao do DataBinding no WPF.

    Porm, no WPF, a definio do objeto fonte de dados a partir da propriedade DataContext. Essapropriedade existe na maioria dos componentes, mas comumente, atribuda na tag Window. ODataContext no o objeto fonte de dados em si, mas sim um objeto que contem este o objeto fonte de

    dados, inclusive, necessrio especificar o nome da instancia do objeto. Por exemplo, na classeFonteDados tem uma propriedade ObjetoFonte, do tipo cliente. Na definio do binding, ser necessriocolocar ObjetoFonte.Nome, caso, por exemplo, deseja-se pegar o nome do cliente.

    Um dos atributos do Binding no WPF, o ElementName. Este atributo aponta como objetofonte outro elemento definido no XAML. Por exemplo, o TextBox nome s ficar habilitado caso oCheckBox estiver marcado. Isto tambm possvel no Windows Forms, s colocar como objeto fonteo controle desejado. A listagem 8 mostra a definio do DataContext, em sublinhado, na window daaplicao. Nesta situao, apontado que o DataContext da window ela mesma, no caso, seu code-behind. necessrio dar um nome para os controles, na necessidade de utilizar o atributo ElementName.

    Listagem 8: Ligao do DataBinding no WPF.

    Tanto no Windows Forms como no WPF, o objeto que ser a fonte das informaes necessitar denotificar a alterao de valores da propriedade. Ento, a classe onde estar este objeto dever herdar dainterface INotifyPropertyChanged, igual a classe cliente. No exemplo, o objeto fonte ser do tipo cliente,ento, a listagem 9 mostra a definio da propriedade cliente.

    Listagem 9: Propriedade cliente que servir de fonte de dados para o DataBinding

    privateCliente_objetoFonte;

    publicClienteObjetoFonte{

    get{ return_ objetoFonte; }set{

    _ objetoFonte = value;OnPropertyChanged("ObjetoFonte");

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    18/25

    }

    }

    Com estes passos realizados, s codificar a ligao nos controles com as propriedades do objetofonte e o DataBinding entra em ao. A listagem 10mostra as ligaes dos TextBoxs nome e cidade noWindows Forms. A listagem 11mostra o XAML da definio das mesmas propriedades de cliente parao WPF.

    Listagem 10: Definio do DataBinding no Windows Forms

    txtNome.DataBindings.Add(newBinding("Text", ObjetoFonte, "Nome", true,DataSourceUpdateMode.OnPropertyChanged));

    txtCidade.DataBindings.Add(newBinding("Text", ObjetoFonte, "Cidade", true,DataSourceUpdateMode.OnPropertyChanged));

    Listagem 11: Propriedade cliente que servir de fonte de dados para o DataBinding

    ...

    O uso do DataBinding, independente a tecnologia utilizada, muito til, pois evita de ficarpreenchendo objetos e controles na mo. O tempo de desenvolvimento cai significativamente e ocdigo fica bem mais enxuto. Tanto no WinForms como no WPF, a definio do DataBinding bemsimples.

    O que diferencia uma tecnologia da outra o tratamento quanto aos tipos de objeto. No WPF, porexemplo, o texto da propriedade foi digitado errado, ele no gera nenhum erro, simplesmente no realizaa ligao. J no WinForms, ele gera o erro, que no tratado, para toda a aplicao para notificar o erro.

    Estes erros podero ser tratados, em ambas as tecnologias, porm, no este o objetivo por agora.Analise de casos importante levar em conta tambm que o tipo do software a ser produzido essencial na escolha

    da tecnologia a ser utilizada, para assim se obter uma melhor vantagem na construo do mesmo. Ento,para deixar bem claro ao leitor, sero apresentados alguns casos onde possvel aplicar as tecnologias,porem, analisando caso a caso qual delas a melhor para determinada situao.Caso 1: Necessidade de alto processamento

    O objetivo do projeto criar um sistema simples de prazo curto, sem se importar muito com ovisual para o usurio e precisa ter um bom desempenho, pois o sistema ser utilizado para converter umabase de dados do banco Firebird para o SQL Server. Isto significa que o software ter de ser simples efuncional. Logo, no necessrio fazer grandes interfaces, com animaes, efeitos e brilhos. Ento,

    neste caso, antes de escolher a tecnologia a ser utilizada, necessrio por na balana alguns itens paraanalise.

    Se a aplicao precisa de um alto desempenho, pode ser utilizado WPF, j que este utiliza recursosde hardwares multimdia, como da placa de vdeo, para processar as interfaces com o usurio, liberandoum pouco o trabalho do processador. Porem, o software pode demorar um pouco mais para serdesenvolvido, pois mais trabalhosa a construo de formulrios com o WPF, ainda mais se as telasforem grandes.

    Por outro lado, a utilizao de WinForms no pode ser descartada, j que bem simples aconstruo de formulrios e diminui significativamente a construo do software. A desvantagem desta

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    19/25

    tecnologia que somente o processador ir trabalhar na execuo, j que o Windows Forms no utilizaoutros hardwares para auxilia-lo no processamento do sistema.

    Para este caso, a sugesto melhor seria utilizar o WinForms, pois, neste tipo de software, a maioriadas vezes, o computador fica dedicado somente a execuo do sistema, mantendo um bom desempenhoda aplicao, e no necessitando de grandes efeitos na interface com o usurio.

    Caso 2: Exibio de dados complexosO objetivo do projeto apresentar os dados que o cliente deseja agrupados, semelhante a umrelatrio, porm, como o cliente no possui e no vai adquirir a licena de um framework de relatrios,como Crystal Reports, a apresentao dos dados ser desenvolvida em formulrios mesmo.

    O cliente deseja tambm que certos dados de alguns conceitos, como por exemplo, cliente efornecedor, sejam apresentados em cartes, pois como contem muitas informaes de um mesmoregistro, como nome, cpf/cnpj, endereo, etc., os dados em modo carto fica mais fcil a visualizao.

    Nesta aplicao, a interface importante para o objetivo do desenvolvimento, j que o cliente umamaneira no muito comum para a visualizao dos dados. Ento, quando se trata de efeitos visuais, amelhor opo o WPF em relao ao Windows Forms.

    Para desenvolver o que o cliente precisa no WinForms demandaria muito mais tempo que o WPF,pois este tem um recurso chamado Data Template, que uma forma de modelar a apresentao dosdados a partir de objetos. A listagem 12 mostra um exemplo de Data Template, concatenandopropriedades de um nico objeto de uma maneira simples, verstil e de fcil manuteno dados deendereo, como logradouro, nmero e bairro.

    Listagem 12: Exemplo de Data Template modelando dados de endereo.

    Com o DataTemplate do WPF, modelar a apresentao de dados fica bem mais facil, eficaz eapresentavel que no WinForms. Porm, no s na modelagem dos dados que o WPF permite umamelhor apresentao dos dados.

    Por ser estruturado em XAML, ele permite uma hierarquia de controles mais abrangente que oWindows Forms. Isso significa que, por exemplo, possivel colocar um TextBox dentro de um Boto,ou o contrrio. Essa hierarquia permite um agrupamento de controles que revoluciona a apresentaodos dados dentro dos controles. possvel fazer um DataGrid agrupar e filtrar os registros j buscadosno banco de dados sem precisar realizar outra consulta pra isto, mostrar grficos, mais dados agrupados,

    entre outras informaes.A figura 13, figura 14, figura 15e figura 16 ilustram a o grande poder de manipular os dados

    dos DataGrids do WPF, como detalhamento, insero de objetos como grficos, agrupamento deregistros com os mesmos que j esto no Grid e filtragem de dados, respectivamente.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    20/25

    Figura 13. DataGrid com detalhamento de registros

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    21/25

    Figura 14.DataGrid com grfico no detalhamento do registro

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    22/25

    Figura 15.Agrupamento dos registros que foram consultados, sem necessitar de um novoacesso a fonte de dados

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    23/25

    Figura 16.Filtragem dos registros, realizado no prprio DataGrid

    A unio do DataTemplate com o poder de manipular e apresentar os dados para o usurio do WPF,permite que o desenvolvedor faa grandes trabalhos e consegue atingir o objetivo, que tornar anecessidade do cliente, que era um problema, em soluo.

    Nota do DevMan

    O DataGrid nativo do .net no possui um grande leque de recursos para o desenvolvimento. Eleno pobre, mas tambm no o melhor. Por isso, grandes empresas especializadas emdesenvolvimento de controles, como a Telerik e a Xceed, produzem um framework de controles ecomercializam, muitas vezes por preos medianos, no to caros, mas tambm, no muito baratos.

    A maioria dos controles so codificados para WPF/Silverlight, Windows Forms e ASP.NET. Avenda destes tambm pode ser realizada separadamente, ou seja, se a empresa que deseja comprarfabrica software utilizando WinForms, compra somente o pacote WinForms de controles, conseguindoum preo mais em conta.

    Em algumas situaes bem melhor adquirir estes produtos, que facilitam o desenvolvimento do

    software, do que desenvolver um desde o inicio, com a incerteza se ele atender todas as necessidadesou no.

    Caso 3: Aplicao simples, extensa e ser executada em hardwaredefasado

    O objetivo do projeto fazer um sistema simples, com fluxo de caixa, cadastro de clientes,fornecedores, produtos, e relatrios. Este sistema ser utilizado em vrias maquinas e, muitas delas, jpossuem muito tempo de uso e no foi realizado upgrade de hardware.

  • 5/25/2018 Compara o Entre WPF e Windows Forms

    24/25

    Esta ultima informao chave para a seleo da tecnologia a ser utilizada. Se a escolha for WPF,um dia aps o uso, o cliente ligar para a empresa que desenvolveu o software reclamando da lentidodo sistema. O WPF uma excelente tecnologia, porem, como toda tecnologia, tem vantagens edesvantagens, e, sua principal desvantagem, se tornar lento em maquinas com hardware defasado. Paraa aplicao executar sem problemas, necessrio um hardware melhor.

    Ento, como as configuraes de hardware no se enquadram na tecnologia mais nova, a opo utilizar Windows Forms, com pouco recurso visual, porm, bem eficiente neste tipo de situao, onde ohardware um problema. O sistema poder satisfazer a necessidade do cliente facilmente, mesmodesenvolvido com o Windows Forms.

    ConclusoO objetivo deste artigo foi ajudar o leitor a identificar algumas situaes onde melhor a aplicao

    do WinForms e onde melhor a aplicao do WPF. Muitos desenvolvedores nunca trabalharam comWPF, ento s trabalham com o Windows Forms.

    Ento, quando o cliente necessita de um visual melhor trabalhado ou visualizao dos dados demaneira especifica, o programador pode no oferecer o melhor produto, utilizando Windows Forms. Asvezes, isto acontece por que quem vai desenvolver o software no conhece o WPF, j que umatecnologia mais nova, e as vezes no so todos que possuem o privilgio de trabalhar com umatecnologia destas no emprego, e no possuem tempo de estudar isso fora do expediente do trabalho.

    De alguma forma, tambm objetivo deste artigo encorajar e introduzir os desenvolvedoresWinForms a produzir seus programas em WPF, comparando a tecnologia que ele utiliza atualmente emostrando como uma aplicao pode ser desenvolvida em WPF, com grandes recursos que podem serum diferencial para os sistemas que pretendero desenvolver.

    Linkshttp://www.baixaki.com.br/info/1807-o-que-e-api-.htmHowStuffWorksO que uma API?http://informatica.hsw.uol.com.br/conferencia-api1.htm

    Introduo ao desenvolvimento de Windows Formshttp://msdn.microsoft.com/pt-br/vbasic/ms789117.aspxIntroduo ao WPFhttp://msdn.microsoft.com/pt-br/library/cc564903.aspxWindows Presentation Foundationhttp://windowsclient.net/WPF/Apresentando LINQ - Language Integrated Query.http://www.macoratti.net/07/12/net_linq.htmIntroduo ao DirectX.http://msdn.microsoft.com/pt-br/library/cc518041.aspxIntroduo ao Microsoft Windows Workflow Foundation

    http://msdn.microsoft.com/pt-br/library/aa480214.aspxIntroduo ao Windows Presentation Foundationhttp://msdn.microsoft.com/pt-br/library/aa970268.aspx.NET Framework 3.5 Commonly Used Types and Namespaces Posterhttp://windev.wordpress.com/2007/11/18/net-framework-35-commonly-used-types-and-namespaces-poster/Templates, or Why I love WPF (and Silverlight Too!)http://www.scottlogic.co.uk/blog/colin/2010/09/templates-or-why-i-love-wpf-and-silverlight-too/

    Saiba Mais

    http://www.baixaki.com.br/info/1807-o-que-e-api-.htmhttp://www.baixaki.com.br/info/1807-o-que-e-api-.htmhttp://informatica.hsw.uol.com.br/conferencia-api1.htmhttp://msdn.microsoft.com/pt-br/vbasic/ms789117.aspxhttp://msdn.microsoft.com/pt-br/vbasic/ms789117.aspxhttp://msdn.microsoft.com/pt-br/library/cc564903.aspxhttp://msdn.microsoft.com/pt-br/library/cc564903.aspxhttp://windowsclient.net/WPF/http://www.macoratti.net/07/12/net_linq.htmhttp://www.macoratti.net/07/12/net_linq.htmhttp://msdn.microsoft.com/pt-br/library/cc518041.aspxhttp://msdn.microsoft.com/pt-br/library/cc518041.aspxhttp://msdn.microsoft.com/pt-br/library/aa480214.aspxhttp://msdn.microsoft.com/pt-br/library/aa480214.aspxhttp://msdn.microsoft.com/pt-br/library/aa970268.aspxhttp://msdn.microsoft.com/pt-br/library/aa970268.aspxhttp://windev.wordpress.com/2007/11/18/net-framework-35-commonly-used-types-and-namespaces-poster/http://windev.wordpress.com/2007/11/18/net-framework-35-commonly-used-types-and-namespaces-poster/http://www.scottlogic.co.uk/blog/colin/2010/09/templates-or-why-i-love-wpf-and-silverlight-too/http://www.scottlogic.co.uk/blog/colin/2010/09/templates-or-why-i-love-wpf-and-silverlight-too/http://www.scottlogic.co.uk/blog/colin/2010/09/templates-or-why-i-love-wpf-and-silverlight-too/http://windev.wordpress.com/2007/11/18/net-framework-35-commonly-used-types-and-namespaces-poster/http://windev.wordpress.com/2007/11/18/net-framework-35-commonly-used-types-and-namespaces-poster/http://msdn.microsoft.com/pt-br/library/aa970268.aspxhttp://msdn.microsoft.com/pt-br/library/aa480214.aspxhttp://msdn.microsoft.com/pt-br/library/cc518041.aspxhttp://www.macoratti.net/07/12/net_linq.htmhttp://windowsclient.net/WPF/http://msdn.microsoft.com/pt-br/library/cc564903.aspxhttp://msdn.microsoft.com/pt-br/vbasic/ms789117.aspxhttp://informatica.hsw.uol.com.br/conferencia-api1.htmhttp://www.baixaki.com.br/info/1807-o-que-e-api-.htm
  • 5/25/2018 Compara o Entre WPF e Windows Forms

    25/25

    Artigo - .net Magazine 74 - WPF para aplicaes comerciaisParte 1Paulo Quicolihttp://www.devmedia.com.br/post-17161-WPF-para-aplicacoes-comerciais-Parte-1--Net-Magazine-74.htmlArtigo - .net Magazine 75 - WPF para aplicaes comerciaisParte 2Paulo Quicolihttp://www.devmedia.com.br/post-17461-WPF-para-aplicacoes-comerciais-Parte-2--Net-Magazine-75.htmlArtigo - .net Magazine 75 - WPF e Expression Blend 4http://www.devmedia.com.br/post-17460-WPF-e-Expression-Blend-4--Net-Magazine-75.html Artigo - .net Magazine 55 - Aplicaes WPF de SucessoRodrigo Sendinhttp://www.devmedia.com.br/post-10735-Artigo--net-Magazine-55-Aplicacoes-WPF-de-Sucesso.html Artigo - Programa Simples em Windows Forms com C# de Clculo de Frete Wellington Balbo deCamargohttp://www.devmedia.com.br/post-16963-Programa-Simples-em-Windows-Forms-com-C-de-Calculo-de-Frete.htmlArtigo - Criando aplicaes Windows Forms auto-ajustveis ao tamanho da tela Gustavo Barroshttp://www.devmedia.com.br/post-4926-Criando-aplicacoes-Windows-Forms-auto-ajustaveis-ao-tamanho-da-tela.htmlArtigoImplementando o recurso de ajuda em sistemas Windows Formshttp://www.devmedia.com.br/post-3935-Implementando-o-recurso-de-ajuda-em-sistemas-Windows-Forms.htmlArtigo - Dicas .NET - Melhorando a validao em formulrios Windowshttp://www.devmedia.com.br/post-2114-Dicas--NET-Melhorando-a-validacao-em-formularios-Windows.htmlArtigo - .net magazine 69 - Sabores.NET - Rodrigo Sendinhttp://www.devmedia.com.br/post-15240-Artigo--net-magazine-69-Sabores-NET.html Artigo - .net Magazine 53 - C#(csharp) 3.0Giovanni Bassihttp://www.devmedia.com.br/post-10608-Artigo--net-Magazine-53-C-csharp-3-0.html

    http://www.devmedia.com.br/post-17161-WPF-para-aplicacoes-comerciais-Parte-1--Net-Magazine-74.htmlhttp://www.devmedia.com.br/post-17161-WPF-para-aplicacoes-comerciais-Parte-1--Net-Magazine-74.htmlhttp://www.devmedia.com.br/post-17161-WPF-para-aplicacoes-comerciais-Parte-1--Net-Magazine-74.htmlhttp://www.devmedia.com.br/post-17461-WPF-para-aplicacoes-comerciais-Parte-2--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17461-WPF-para-aplicacoes-comerciais-Parte-2--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17461-WPF-para-aplicacoes-comerciais-Parte-2--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17460-WPF-e-Expression-Blend-4--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17460-WPF-e-Expression-Blend-4--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-10735-Artigo--net-Magazine-55-Aplicacoes-WPF-de-Sucesso.htmlhttp://www.devmedia.com.br/post-10735-Artigo--net-Magazine-55-Aplicacoes-WPF-de-Sucesso.htmlhttp://www.devmedia.com.br/post-16963-Programa-Simples-em-Windows-Forms-com-C-de-Calculo-de-Frete.htmlhttp://www.devmedia.com.br/post-16963-Programa-Simples-em-Windows-Forms-com-C-de-Calculo-de-Frete.htmlhttp://www.devmedia.com.br/post-16963-Programa-Simples-em-Windows-Forms-com-C-de-Calculo-de-Frete.htmlhttp://www.devmedia.com.br/post-4926-Criando-aplicacoes-Windows-Forms-auto-ajustaveis-ao-tamanho-da-tela.htmlhttp://www.devmedia.com.br/post-4926-Criando-aplicacoes-Windows-Forms-auto-ajustaveis-ao-tamanho-da-tela.htmlhttp://www.devmedia.com.br/post-4926-Criando-aplicacoes-Windows-Forms-auto-ajustaveis-ao-tamanho-da-tela.htmlhttp://www.devmedia.com.br/post-3935-Implementando-o-recurso-de-ajuda-em-sistemas-Windows-Forms.htmlhttp://www.devmedia.com.br/post-3935-Implementando-o-recurso-de-ajuda-em-sistemas-Windows-Forms.htmlhttp://www.devmedia.com.br/post-3935-Implementando-o-recurso-de-ajuda-em-sistemas-Windows-Forms.htmlhttp://www.devmedia.com.br/post-2114-Dicas--NET-Melhorando-a-validacao-em-formularios-Windows.htmlhttp://www.devmedia.com.br/post-2114-Dicas--NET-Melhorando-a-validacao-em-formularios-Windows.htmlhttp://www.devmedia.com.br/post-2114-Dicas--NET-Melhorando-a-validacao-em-formularios-Windows.htmlhttp://www.devmedia.com.br/post-15240-Artigo--net-magazine-69-Sabores-NET.htmlhttp://www.devmedia.com.br/post-15240-Artigo--net-magazine-69-Sabores-NET.htmlhttp://www.devmedia.com.br/post-10608-Artigo--net-Magazine-53-C-csharp-3-0.htmlhttp://www.devmedia.com.br/post-10608-Artigo--net-Magazine-53-C-csharp-3-0.htmlhttp://www.devmedia.com.br/post-10608-Artigo--net-Magazine-53-C-csharp-3-0.htmlhttp://www.devmedia.com.br/post-15240-Artigo--net-magazine-69-Sabores-NET.htmlhttp://www.devmedia.com.br/post-2114-Dicas--NET-Melhorando-a-validacao-em-formularios-Windows.htmlhttp://www.devmedia.com.br/post-2114-Dicas--NET-Melhorando-a-validacao-em-formularios-Windows.htmlhttp://www.devmedia.com.br/post-3935-Implementando-o-recurso-de-ajuda-em-sistemas-Windows-Forms.htmlhttp://www.devmedia.com.br/post-3935-Implementando-o-recurso-de-ajuda-em-sistemas-Windows-Forms.htmlhttp://www.devmedia.com.br/post-4926-Criando-aplicacoes-Windows-Forms-auto-ajustaveis-ao-tamanho-da-tela.htmlhttp://www.devmedia.com.br/post-4926-Criando-aplicacoes-Windows-Forms-auto-ajustaveis-ao-tamanho-da-tela.htmlhttp://www.devmedia.com.br/post-16963-Programa-Simples-em-Windows-Forms-com-C-de-Calculo-de-Frete.htmlhttp://www.devmedia.com.br/post-16963-Programa-Simples-em-Windows-Forms-com-C-de-Calculo-de-Frete.htmlhttp://www.devmedia.com.br/post-10735-Artigo--net-Magazine-55-Aplicacoes-WPF-de-Sucesso.htmlhttp://www.devmedia.com.br/post-17460-WPF-e-Expression-Blend-4--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17461-WPF-para-aplicacoes-comerciais-Parte-2--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17461-WPF-para-aplicacoes-comerciais-Parte-2--Net-Magazine-75.htmlhttp://www.devmedia.com.br/post-17161-WPF-para-aplicacoes-comerciais-Parte-1--Net-Magazine-74.htmlhttp://www.devmedia.com.br/post-17161-WPF-para-aplicacoes-comerciais-Parte-1--Net-Magazine-74.html