WPF - Revisando conceitos bem básicos
Quando você decide trabalhar com a WPF existem muitos conceitos básicos que você precisa conhecer para saber o que esta acontecendo por "trás dos panos".
A WPF (Windows Presentantion Fundation) é uma tecnologia que se propõe ser uma alternativa ao modelo Windows Forms, e, em se tratando de recursos a WPF vai além.
Para criar aplicações WPF você pode usar o Visual Studio 2010 , o Visual Basic 2010 Express Edition , o Visual C# 2010 Express Edition e o SharpDevelop 4.0.
Já deu para perceber que você pode criar aplicações WPF usando tanto a linguagem VB .NET como a linguagem C# e neste artigo eu vou usar a primeira opção.
Criando uma aplicação WPF no VB 2010 Express
Abra o Visual Basic 2010 Express Edition e no menu File selecione New Project;
Na janela New Project selecione o modelo WPF Application, informe o nome Wpf_Exemplo e clique em OK;
Será criada uma Solução contendo os arquivos mostrados na figura abaixo:
Será aberto dois painéis:
Você pode selecionar os painéis clicando nas abas Design e XAML. Para alternar a ordem dos painéis clique no ícone ;
Abra o arquivo MainWindow.xaml.vb e no evento Initialized de Window inclua o código mostrado a seguir:
Pressione F5 para compilar e rodar a aplicação. Deverá ser apresentada a janela exibindo o título e conteúdo conforme a figura a seguir:
Obs: No SharpDevelop os dois arquivos criados na solução são: Window1.xaml(Window1.xaml.vb) e App.xaml (App.xaml.vb)
Vamos dar uma olhada no que foi produzido para nós pelo VB 2010 Express quando usamos o modelo WPF Application para criar a nossa aplicação WPF.
O template WPF Application produz o programa chamado Wpf_Exemplo que é constituído de duas classes:
Cada uma dessas classes é implementada como dois arquivos de código na solução:
Percebeu que temos duas linguagens envolvidas em uma aplicação WPF ?
Sim: XAML e VB .NET (ou XAML e C#).
Mas o que vem a ser XAML ?
XAML é uma linguagem de marcação baseada na linguagem XML para especificação e definição de características de classes.
XAML é utilizado principalmente para a especificação de aspectos estáticos e visual da interface do usuário através da definição propriedades de objetos da classe
Por exemplo, você pode usar XAML para colocar um botão em uma janela e definir todas as suas características visuais enquanto podemos usar a linguagem VB .NET (ou C#) para escrever o manipulador de mensagem que é chamado quando o botão for clicado.
Os dois arquivos XAML gerados por padrão quando você cria uma aplicação WPF em uma das ferramentas citadas são:
MainWindow.xaml | |
Application.xaml |
Se observarmos o código dos arquivos XAML podemos notar tags e nós onde acabamos tendo uma estrutura em forma de uma árvore onde cada nó contém outros nós.
Para mostrar essa características vamos abrir o arquivo MainWindow.xaml e incluir a partir da ToolBox um controle StackPanel, um controle TextBlock e um controle Button conforme mostra a figura a seguir:
A WPF trabalha com duas árvores :
Árvore Lógica | Árvore Visual |
O processo de compilação WPF
Em uma aplicação WPF, como temos duas linguagens , a compilação é um processo feito em duas etapas.
O arquivo MainWindow.g.vb é um arquivo VB .NET que contém o código para carregar o XAML e conectar diferentes componentes e manipuladores em tempo de execução. Você pode até abrir esse arquivo, e também pode modificá-lo sem problemas, porque ele é gerado pelo compilador e substituirá qualquer alterações feitas.
O arquivo MainWindow.baml onde baml significa Binary Application Markup Language. Esta versão do código XAML é indexado para torná-lo mais eficiente no carregamento e análise em tempo de execução e não é um arquivo legível.
O compilador pega os arquivos de código-fonte e produz um conjunto de arquivos intermediários e produz então o arquivo executável a partir dos arquivos intermediários.
Abaixo temos a figura que mostra a estrutura de diretórios produzidos pelo Visual Studio quando ele gera um projeto WPF Application. Esta estrutura apresenta a saída após a compilação, quando o projeto está em configuração de Debug(depuração). Os quatro arquivos de código-fonte estão na pasta do projeto, juntamente com duas outras pastas.
- A pasta
bin,
contém uma subpasta que contém o executável. A
subpasta é chamado Debug ou Release,
consoante você está em modo de depuração ou modo de
liberação - A pasta obj contém uma subpasta contendo arquivos intermediários gerados pelo compilador - O arquivo App.baml aparecerá somente se você adicionar elementos ao arquivo fonte Application.xaml caso contrário ele não será gerado. |
Como os arquivos são utilizados
Você já sabe que as classes Application e Window possuem cada uma um arquivo fonte VB .NET(ou C#) um arquivo gerado VB .NET(ou C#) e um arquivo XAML, o qual é traduzido em um arquivo BAML.
Você sabe as funções dos arquivos de origem, vejamos a seguir quais os papéis dos arquivos gerados:
- Os arquivos BAML gerados são uma tradução condensada e mais eficiente do XAML arquivos. Elas são otimizadas para carregamento mais rápido e interpretação em tempo de execução, uma vez que, em tempo de execução, o programa carrega esses arquivos na memória;
- A arquivo gerado VB .NET tem uma extensão .g.vb. Este arquivo contém o código para carregar os BAML a partir do executável e conectá-lo para criar a interface do usuário. O g na extensão representa gerado;
- O compilador pega o arquivo fonte VB .NET e o arquivo gerado VB .NET, e usa as classes parciais em cada um para criar a classe completa;
Quando o programa estiver criando um
objeto da classe Window, as seguintes tarefas são executadas:
1. O construtor Window é chamado.
2. O construtor Window chama o método da classe InitializeComponent,
que carrega a árvore de interface do usuário e conecta todas as
partes e manipuladores de eventos.
O construtor para a classe Window chama o método InitializeComponent, que carrega o Window BAML do assembly e constrói a árvore de elementos da interface do usuário.
Dessa forma espero que você tenha uma visão mais clara sobre o processo de criação de uma aplicação WPF, pelo menos em seu nível mais básico.
Eu sei é apenas WPF, mas eu gosto...
"Vim lançar fogo na terra, e que mais quero, se já está acesso ? ." (Lucas 12:49)
Referências: