Tutorial C# – O que é o WPF (Windows Presentation Foundation)
No último tutorial de C#, o nosso caro leitor Shogun deixou uma sugestão de em vez de usar as tão comuns Windows Forms, usar também o WPF. Para ser sincero, nunca tinha utilizado WPF, mas como fiquei curioso fui à procura de mais informações. O que encontrei foi fantástico, e como tinha prometido aqui vai um pequeno tutorial/introdução sobre WPF.
O que é o WPF?
O Windows Presentation Foundation é um componente do Microsoft .NET Framework 3.5. É considerado a próxima geração de UI (User Interface), que permite a criação de aplicações com um grau de personalização extremamente elevado, criando assim uma experiência única ao utilizador.
O WPF suporta intefaces de aplicação, gráficos 2D e 3D, documentos, aceleração de hardware, gráficos vectoriais,visualização de dados interactivos e multimédia numa única estrutura (framework).
O motor do vector utiliza a aceleração de hardware das novas placas gráficas, permitindo assim tornar a interface mais rápida, escalável e com resolução independente.
Separação entre a aparência e comportamento
O WPF separa a aparência da interface do utilizador do comportamento.
A aparência no WPF é criado geralmente no XAML (Extensible Application Markup Language), o desempenho/comportamento é implementado numa linguagem de programação, como por exemplo o C#.
As duas partes estão ligadas entre di pelos eventos de ligação a dados e comandos.
A separação da aparência e comportamento tem as seguintes vantagens:
- Personalização dos modelos e das aplicações - As ferramentas de design gráfico podem trabalhar em documentos XML “simples” em vez de ter de analisar o código.
Extremamente personalizável
Devido à separação da aparência do comportamento, é extremamente simples alterar a aparência de um botão por exemplo.
O conceito de estilos permite ter um controlo da aparência idêntico ao CSS.
O exemplo seguinte mostra o quanto personalizável é a aparência.
Interface sem dependência da resolução
Todas as medidas em WPF são unidades lógicas - não pixeis. Uma unidade lógica é um 1 / 96 de polegada. Se aumentar a resolução do ecrã, a interface do utilizador fica do mesmo tamanho - se só fica mais nítida. Com o WPF a interface “acompanha” o aumento da resolução.
O que é o XAML (Extensible Application Markup Language)? O XAML é baseado no XML para criar e iniciar objectos .NET com relações hierárquicas.
Apesar de ter sido inventado originalmente para o WPF é também usado para criar qualquer tipo de “árvores” de objecto.
Agora o XAML é usado para criar interfaces de utilizador do WPF, Silverlight e também para o papel electrónico do padrão XPS.
Nota: Definição de XPS - “XML Paper Specification (XPS), é um formato de arquivo desenvolvido pela Microsoft para representar documentos portáteis, visando facilitar a distribuição de documentos entre aplicativos, sistemas operacionais e periféricos como impressoras e scanners. Diferente dos documentos de papel, documentos XPS oferecem uma conveniente alternativa para leitura, impressão, transferência e estocagem.” Fonte: Wikipédia
Principais vantagens do XMAL
Tudo o que é criado no XAML também pode ser feito no código. XAML é apenas uma outra maneira de criar e inicializar objectos. Podemos usar WPF sem usar o XAML.
• Código XAML é curto e fácil de ler • Separação do código de designer e lógica • Ferramentas de design gráfico como o Expression Blend exigir XAML como fonte. • A separação de XAML e lógica da interface do utilizador permite a clara separação dos papéis de designer e programador.
O designer pode criar toda a componente gráfica, e o programador a parte do código.
XAML vs Código Um pequeno exemplo. Usar um StackPanel simples com um TextBlock e um botão no XAML.
Agora o mesmo “efeito” mas em código C#
E agora, como fica na interface.
Por este pequeno exemplo podem verificar as vantagens do XAML. E agora passemos a um pequeno exemplo de um botão personalizado com gradiente.
O código em XAML será:
O aspecto final (um botão simples com gradiente criado com XAML):
Como podem verificar o código é muito parecido com HTML ou mesmo ASP. Devido ao interface ser extremamente personalizável, no WPF a “união” entre design gráfico e programador pode ser indispensável.
Como disse anteriomente, nunca utilizei o WPF, por isso também isto é novo para mim, mas fiquei impressionado pelas vantagens que o WPF pode trazer para uma interface mais agradável e personalizada.
Quem tiver mais curiosidade sobre o WPF pode visitar as seguintes páginas:
Fontes:
Este artigo tem mais de um ano
1st!!
sem duvida algo espectacular da microsoft!!
Muito boa apresentação ao WPF, quando tiver aqui ppl novo voulhes dar esta apresentação, para poupar tempo e voz 😛
Olha entretanto mais uma curiosidade que podem pesquisar sobre WPF, bindings , que são das melhores inovacoes no WPF 😉
Bem jogado Hélio 😛
Tomem la uma bela quantidade de styles 😀
http://wpf.codeplex.com/wikipage?title=WPF%20Themes
Boa. Alguém que domine WPF era bom uns tutoriais!
PS: quem tirou os print screens anda a ler pouco o pplware, há por aí muito software para os fazer obtendo imagens bem legíveis 😛
Se houvesse tempo ate os fazia mas infelizmente, isto anda cmplicado, o unico tempo k tenho e entre downloads de aplicacoes como agora lol
Olá Frigo,
Estás a falar dos print screen do artigo? Se sim, não te esqueças que se deve “clicar” em cima das imagens para ter melhor resolução… 🙂
Melhor melhor, era brincar com o Silverlight, o wpf está um bocadinho parado. Assim nem era preciso fazer print screen’s e colocavam os exemplos directamente nos post’s 😉
No WPF tive mesmo de fazer os print screens, pois o código fazia com que o botão (por exemplo) ficava no site.
Cumps,
Hélio
Bem, não é só dizer mal da Microsoft. O C# assim como as as versões Express que disponibilizam do Visual Studio são a meu ver EXCELENTES.
A minha maior experiencia é em C mas desde que tive conhecimento do C# que estou completamente pasmado. É claro que cada uma tens as suas vantagens e desvantagens (e aplicações diferentes), mas o C# cada vez me surpreende mais pela produtividade! A quantidade de coisas que se podem fazer em relativamente poucas linhas. Alem de ter a sintaxe mais intuitiva que já experimentei até hoje.
Obrigado pelo tutorial e partilha!
Uma pequena correcção, onde diz “XAML (Extensible Application Larkup Language)” deveria ser Markup Language e não Larkup Language.
Bom artigo 🙂
Corrigido. Erro na digitação. Obrigado.
Cumps
HM
Estou gostar do que estou a ver muito poderoso !!
É realmente algo muito bom. Devem explorar e aprender. WPF e Silverlight é o futuro de muitas aplicações 😉
Ora aí está os bons dos tutoriais de programação.. É disso que o meu povo gosta 😀
Muito bom post, keep it going 😉
Muito efeito visual para pouco resultado.
Desapontador…mas engana bem a maioria.
Não te esqueças que às vezes o principal é a apresentação, senão programavamos todos em C++.
Cheers
Pouco resultado? Pelo menos apresenta argumentos quando fazes uma critica, pois criticar por meias palavras qualquer um o faz, mas e tipico do ppl de linux criticar apenas porque sao anti-microsoft.
Sem dúvida que Silverlight e WPF são ferramentas que podem e devem ser exploradas. Vale a pena brincar um pouco e abrir os horizontes. Quanto à questão Eficiência vs Eficácia ainda não tenho uma opinião formada. O Siverlight apesar de correr em Web, necessita que o tenha instalada framework no client e parece-me apenas funcionar correctamente em IE, o que coloca em causa muitas dúvidas em relação a compatibilidade, principalmente quanto se inicia um projecto e temos que decidir que feramentas utilizar. O wpf também tem várias vantagens mas acredito mais que o futuro das aplicações é Web com os serviços a correr em win app ou web serv.
Olá, bom dia!
Preciso de uma ajuda para manipulação de janelas.
Gostaria que uma janela em específico ficasse em estado hide.
Alguém sabe me dizer como conseguir este efeito, ou me indicar, onde posso obter esta resposta.
Estou trabalhando com vb.net.
Grato
Edson
Ótimo artigo, ainda hoje em 2017 está servindo, sempre há novatos como eu que precisam desta base, parabéns pelo artigo!