1. Introdução
O Windows Presentation
Foundation (ou WPF), inicialmente chamado de “Avalon”
é um dos pilares do .Net Framework 3.0. Esse pilar é responsável pelo novo estilo da
camada de apresentação nesse Framework.
Com o aparecimento dessa nova tecnologia, surge a
seguinte dúvida: Para utilizar WPF em minhas aplicações já desenvolvidas
em Windows Forms, é necessário desenvolver toda a
aplicação novamente?
Em um ambiente em que o desenvolvimento das
aplicações é feito utilizando camadas, a migração de Windows Forms para WPF tende a ser bastante tranqüila.
Mas, como nem todos têm o privilégio de
desenvolver em um ambiente que preze o desenvolvimento em camadas, onde a camada
de apresentação deve possuir somente elementos de interface, tende-se a pensar
que a migração é impraticável.
Pensando nisso, juntamente com o WPF, temos
algumas DLLs que viabilizam a
utilização de controles desenvolvidos utilizando WPF em aplicações Windows Forms.
Neste artigo, criaremos um simples controle
utilizando WPF e abordaremos como é feita essa integração.
2.
Criando um componente WPF
Com o Visual Studio 2005 (utilizamos a versão Standard neste artigo), ou CTP
do Visual Studio Orcas,
o .Net
Framework 3.0 e as extensões
do WPF & WCF para Visual Studio 2005
instaladas, surge na tela New Project, uma outra classe de projetos, que
corresponde a projetos do .Net Framework 3.0, como
mostra a figura abaixo.
Fig. 1: Nova categoria de Projetos: NET Framework 3.0
Os novos tipos de projetos disponíveis são:
- Windows Application (WPF): cria uma aplicação
WPF;
- XAML Browser Application (WPF): cria uma página web que utiliza WPF;
- Custom Control
Library (WPF): cria um User
Control WPF;
- WCF Service Library: cria um serviço WCF.
Como queremos criar um controle WPF, precisamos selecionar o tipo de projeto
“Custom Control Library (WPF)”.
Ao criarmos o projeto, temos que estender uma área para construir nosso User Control. Estenda a área,
adicione 2 TextBoxes e um
Button de forma que a tela fique parecida com a tela
abaixo.
Fig. 2: Layout do User Control
Caso você prefira, utilize o código XAML abaixo, que representa o layout do
nosso User Control.
XAML
<UserControl
x:Class="LibraryWPFDemo.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="224" Width="297">
<Grid>
<TextBox
Height="26" Margin="32,33,52,0" Name="textBox1" VerticalAlignment="Top"
></TextBox>
<Button
Height="23" Margin="32,67,53,0" Name="button1" VerticalAlignment="Top">Button</Button>
<TextBox
Margin="33,95,54,51" Name="textBox2" Text="Exemplo WPF Dot Net Raptors"></TextBox>
</Grid>
</UserControl>
Para nosso User Control
ter alguma funcionalidade, precisamos criar um Event
Handler para o botão. A idéia é que, ao clicarmos no
botão, o texto do textBox2 seja alterado para o seu próprio texto mais o texto
que estiver digitado no textBox1. Vamos então criar o método que irá tratar esse
evento no Code Behind do User Control (que é o arquivo de extensão .cs ou .vb que fica abaixo do arquivo XAML na tela Solution Explorer):
C#
public void cliqueDoBotao(object sender, EventArgs e)
{
// Modifica o texto do textBox2 para o texto
do textBox2 mais o texto do textBox1.
textBox2.Text
= textBox2.Text + " " +
textBox1.Text;
}
VB.NET
Private Sub
cliqueDoBotao(ByVal sender As System.Object, ByVal e As
System.EventArgs)
'
Modifica o texto do TextBox2 para o texto do TextBox2 mais o texto do
TextBox1.
TextBox2.Text
= TextBox2.Text + " " +
TextBox1.Text
End Sub
Para completar nosso User Control, precisamos associar o evento Click do button1 com o Event Handler criado. Para isso, modificamos a linha que
representa o botão no código XAML, adicionando a instrução de tratamento do
Click:
XAML
<Button
Height="23" Margin="32,67,53,0" Name="button1" VerticalAlignment="Top"
Click="cliqueDoBotao">Button</Button>
Feito isso, temos nosso User Control pronto. Vamos partir agora para a criação da nossa Windows Forms Application que conterá esse User
Control criado.