Sempre me perguntam por e-mail ou nas palestras que faço se desenvolver com WPF é difícil, eu diria que desenvolver aplicações com WPF não é difícil, mas sim vai dar trabalho sair do velho Windows Forms e cair direto no WPF, exige sim estudo, entender como tudo aquilo funciona para não cometer o erro que muita gente comete, desenvolver aplicações Windows Forms com WPF.

Como assim aplicações Windows Forms com WPF?

Bom simplesmente desenvolvendo pensando na forma errada, esse eu acho o maior problema, o paradigma é outro, antes de sair escrevendo código, temos que pensar antes em todos os recursos que o WPF oferece para fazer da melhor forma possível.

Vou dar um exemplo abaixo do que eu chamo de desenvolver Windowns Forms com WPF, imaginem a tela de segurança de banco de dados, onde o usuário pode escolher a forma de segurança, disponível por 2 RadioButtons, Segurança Integrado do Windows  ou Usuário e Senha do SQL Server e dois TextBox para informar o Usuário e Senha caso o usuário escolha Usuário e Senha do SQL Server.

A tela é simples:

Tela

Pensando na forma Windows Forms no eu vou programar o evento Checked de cada RadioButton, eles irão chamar um método que analisa se o Usuário e Senha do SQL Server está selecionado, e habilita os TextBox de Usuário e Senha.

   1: private void radSegurancaIntegradaWindows_Checked(object sender, RoutedEventArgs e)

   2: {

   3:     VerificarFormaSeguranca();

   4: }

   5:  

   6: private void radUsuarioSenhaSQLServer_Checked(object sender, RoutedEventArgs e)

   7: {

   8:     VerificarFormaSeguranca();

   9: }

  10:  

  11: private void VerificarFormaSeguranca()

  12: {

  13:     if(radUsuarioSenhaSQLServer != null)

  14:         txtUsuario.IsEnabled = txtSenha.IsEnabled = (bool) radUsuarioSenhaSQLServer.IsChecked;

  15: }

O código funciona perfeitamente, mas eu não preciso fazer nada disso, eu posso utilizar os recusos de Binding do WPF, e faço todo esse tratamento direto no XAML.

Veja abaixo.

   1: <TextBox Name="txtUsuario" Width="250"  IsEnabled="{Binding ElementName=radUsuarioSenhaSQLServer, Path=IsChecked}"/>

   2: <PasswordBox Name="txtSenha" Width="250" IsEnabled="{Binding ElementName=radUsuarioSenhaSQLServer, Path=IsChecked}"/>

Vejam que a propriedade IsEnabled do TextBox  e do PasswordBox estão fazendo um Binding a outro elemento do meu formulário, ElementName=radUsuarioSenhaSQLServer na propriedade IsChecked, Path=IsChecked.

Resumindo, utilizar todo o poder do WPF da sim um pouco de trabalho, no que diz respeito a ter que estudar, aprender, etc… mas o resultado final recompensa todo o esforço!

Abraços e até a próxima.

  • Alan Cossari

    Parabéns pelo artigo Márcio. Estou iniciando o estudo em WPF, e ficaria grato se pudesse compartilhar mais seu conhecimento sobre este tema conosco.
    Grande Abraço.

  • http://www.marcioalthmann.net/ Márcio Fábio Althmann

    Obrigado pelo comentário Alan, você acha viável artigos para iniciantes em WPF, desde paineis, alinhamentos, databinding, etc…?

    Abraços.

  • Alan Cossari

    Com certeza, para chegar no avançado tem que começar pelo básico. Acredito que você atingirá uma gama de leitores maior, pois muitas vezes deixamos de ler artigos por ser tecnicamente acima dos nossos conhecimentos. Sugiro até uma evolução no nível gradativamente, acredito que assim como eu muitas pessoas se interessariam e participariam mais, ou seja, não seriam Read-Only.

    =D

  • http://www.marcioalthmann.net/ Márcio Fábio Althmann

    Muito obrigado pelo feedback, em breve mais artigos para iniciantes então, bom ver que o post anterior servi para o que eu queria hehe.

    Abraços.

  • http://araimundo.blogspot.com/ Ari C. Raimundo

    Olá Márcio,

    Estou estudando já há alguns meses o WPF (vou prestar o exame 70-502 nas próximas semanas) e devo admitir que WPF não é simples, mas acho que com o tempo o desenvolvedor se acostuma. Os mecanismos de data binding, commands, templates, estilos e animações deixam o Windows Forms bem pra trás.

    Concordo com o Alan em relação a alguns posts mais básicos.

    Um abraço.

    Ari

  • Michel Banagouro

    só uma coisa a dizer: WPF é uma mãe!!!
    hahaha
    deixa o windows forms no chinelo!

  • http://www.rodrigokono.net/ Rodrigo Kono

    Muito bom o post Althmann!
    Tudo isso graças ao XAML.
    Ainda temos os modelos de desenvolvimento para interface com WPF, como MVVM, MEF e MVP… Fica a dica para um próximo post.

    Gostei da clareza.
    Abraço!

  • Emerson

    Marcio, tens uma dica de livro mas daqueles livros que o camarada nunca esquece e que possamos
    adquirir um conhecimento nível média, digamos intermediário?

  • Oops Twitter isnt working at the moment