Artigo Web Mobile 28 - Introdução ao WPF

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

O objetivo deste artigo é apresentar o WPF, tecnologia que veio para enriquecer interfaces e interações com usuários. Ao final deste artigo você estará apto a criar, customizar e escolher entre os melhores objetos e controles do WPF, e começar a aplicar uma melhor usabilidade utilizando WPF em sua aplicação.

Atenção: esse artigo tem um vídeo complementar. Clique e assista!

[lead]Do que trata o artigo

O objetivo deste artigo é apresentar o WPF, tecnologia que veio para enriquecer interfaces e interações com usuários. Ao final deste artigo você estará apto a criar, customizar e escolher entre os melhores objetos e controles do WPF, e começar a aplicar uma melhor usabilidade utilizando WPF em sua aplicação.

Para que serve

As aplicações crescem cada dia mais, e uma interface usável, interativa e agradável pode fazer a diferença. Com o WPF podemos criar interfaces ricas e atrativas onde o usuário tem um grande poder de customização e liberdade para trabalhar de forma rápida e simples.

Em que situação o tema é útil

Este artigo se aplica a todos que desejam criar interfaces ricas, altamente interativas, e de altíssima qualidade gráfica. Essa é uma crescente demanda de mercado e um diferencial importante para as aplcações de hoje.

Resumo do DevMan

O WPF possúi um conteúdo muito extenso, porém neste artigo veremos alguns dos controles que abordam boa parte de seu conteúdo. O intuito final é a compreensão da criação e customização destes controles, facilitando assim a criação de controles mais complexos posteriormente. [/lead]

O .NET Framework 3.0 é a nova plataforma de desenvolvimento da Microsoft. Ele foi baseado no .NET Framework 2.0, e incorpora alguma novidades como o WPF (Windows Presentation Foundation, antes chamado de Avalon). O WPF utiliza recursos de hardware avançados para criar gráficos jamais vistos, e ainda contém um conjunto de classes incorporadas no próprio Framework para manipulação destas funções. Junto ao WPF, temos o XAML (eXtensible Application Markup Language), que utiliza tags XML para criação de objetos.

XAML é o novo conceitode linguagem, utilizado para representação de controles em interfaces Windows e Web. A utilização do XAML propõe a melhor divisão das camadas de apresentação e de regras de negócio. O XAML pode ser facilmente manipulado através de um editor de textos (XamlPad, Notepad++) e visualizado sem necessidade de nenhuma compilação, através do Internet Explorer por exemplo (Requer .NET Framework 3.0 ou superior instalado).

As sintaxes XAML são relativamente simples, e podem ser comparadas as tags HTML, onde pelo arquivo .XAML pode-se construir e inicializar qualquer objeto do .NET Framework. O próprio .NET Framework 3.x trás um compilador e um run-time parser (Utilizado para casts), assim como um plug-in para visualização de aplicações WPF Standalones dentro do Internet Explorer.

A especificação XAML define as regras utilizadas para mapear tipos, propriedades, eventos e namespaces do .NET Framework dentro de XAML Namespaces, atributos e elementos. Por exemplo, podemos criar um botão através de uma tag XAML ou através de um código C#, como mostrado na Listagem 1.

Listagem 1. Criando um bootão via XAML e via C#.Botão declarado em XAML

  <Controls:Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   Content="OK"/>
  
 Botão declarado em C#
  System.Windows.Controls.Button b = new System.Windows.Controls.Button();
  b.Content = "OK";

Aparentemente os dois códigos fazem a mesma coisa, porém a diferença é que neste caso, o código XAML poderia ser instantaneamente visualizado no Internet Explorer, enquanto o código C# teria de ser compilado.

Declarar um objeto via XAML é equivalente a instanciar um objeto via código, através do seu método construtor. Desta mesma forma, quando atribuímos algum valor a uma propriedade em um arquivo XAML, isto equivale a atribuição deste mesmo valor via código, e assim acontece com os eventos também. Veja o exemplo da Listagem 2.

Listagem 2. Criação de um objeto e atribuição de valores a suas propriedades e eventos.XAML

  <Controls:Button xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   Content="OK" Click="button_Click"/>
   
  C#
  System.Windows.Controls.Button b = new System.Windows.Controls.Button();
  b.Click += new System.Windows.RoutedEventHandler(button_Click);
  b.Content = "OK";

Ambos códigos acima fazem chamada a um evento chamado button_Click, que deve ser criado com sua devida assinatura para manipular o evento ocorrido ao clicar do mouse sobre o botão criado. Este código utiliza-se da mistura de código gerenciado e XAML, e sendo assim não pode ser instantaneamente executado, ele necessita ser compilado primeiro. Resumidamente, podemos tanto criar objetos através de códigos XAML quanto códigos C#.

[subtitulo]Trabalhando com Namespaces[/subtitulo]

Assim como quando trabalhamos com códigos como C# e VB.NET, nos arquivos XAML, temos a possibilidade de incluir Namespaces em nossas aplicações.

O objeto raiz de um arquivo XAML deve importar no mínimo um Namespace que identifique ele mesmo e seus filhos. Podemos adicionar Namespaces em qualquer objeto de um documento XAML, desde que um prefixo distinto tenha sido fornecido aos mesmos. Por exemplo, tipicamente um arquivo XAML usa o prefixo “x” antes do Namespace.

  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Note que utilizamos xmlns:x ao invés de utilizar apenas xmlns. Este é o Namespace padrão da linguagem XAML, que incorpora os recursos do Namespace System.Windows.Markup e define algumas diretivas especiais para o XAML Compiler e XAML Parser. Utilizar este namespace é o mesmo que utilziar o namespace System em um arquivo C#.

[nota]Nota do DevMan

O Namespace x já mapeia os seguintes Namespaces:

  System.Windows
  System.Windows.Automation
  System.Windows.Controls
  System.Windows.Controls.Primitives
  System.Windows.Data
  System.Windows.Documents
  System.Windows.Forms.Integration
  System.Windows.Ink
  System.Windows.Input
  System.Windows.Media
  System.Windows.Media.Animation
  System.Windows.Media.Effects
  System.Windows.Media.Imaging
  System.Windows.Media.Media3D
  System.Windows.Media.TextFormatting
  System.Windows.Navigation
  System.Windows.Shapes
[/nota]

[subtitulo]Principais Propriedades[/subtitulo]

Uma das grandes “mágicas” do WPF, é o poder que temos para manipular as propriedades de um objeto. Praticamente todos os objetos tem uma flexibilidade enorme em sua disposição, tamanho e principalmente conteúdo. Vamos tomar como base o seguinte exemplo da Listagem 3.

Listagem 3. Criando um botão via C# e inserindo um retângulo em seu conteúdo.

  public MainPage()
  {
  InitializeComponent();
   
        //Instancia um Retângulo
        Rectangle myRectangle = new Rectangle();
        
  //Instancia um botão
        Button myButton = new Button();
        
  //Define altura e largura do retangulo
        myRectangle.Height = 100;
        myRectangle.Width = 200;
        
  //Define altura e largura do botão
        myButton.Width = 400;
        myButton.Height = 200;
   
        // Cria um SolidBrush para pintar o retângulo de azul
        SolidColorBrush blue = new SolidColorBrush();
        blue.Color = Colors.Blue;
   
        //Preenche o retangulo com o SolidBrush criado
        myRectangle.Fill = blue;
   
        //Atribui o retângulo como conteúdo do botão
        myButton.Content = myRectangle;
   
        // Adiciona os objetos na tela
        LayoutRoot.Children.Add(myButton);
        LayoutRoot.Children.Add(myRectangle);
  }
"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?