TOC

This article has been localized into Portuguese by the community.

Uma aplicação WPF:

A classe Window

Quando uma aplicação WPF é criada, a primeira coisa que você irá conhecer é a classe Window. Ela serve como base de uma janela e te fornece a borda padrão, barra de título e os botões de maximizar, minimizar e fechar. Uma janela do WPF é uma combinação de um arquivo XAML(.xaml), onde o elemento <Window> é a raiz, e o arquivo CodeBehind (.cs). Se você está usando o Visual Studio (Express) e criar uma nova aplicação WPF, ele irá criar uma janela padrão pra você, que será parecida com esta:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Grid>

    </Grid>
</Window>

O atributo x:class diz ao arquivo XAML qual classe usar, neste caso Window1, que o Visual Studio criou para nós. Você encontrará ele na arvore do projeto do VS, como um nó filho do arquivo XAML. Por padrão, ele se parecerá com isso:

using System;
using System.Windows;
using System.Windows.Controls;
//…more using statements

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }
}

Como você pode ver, a classe Window1 é definida como partial, pois ela está sendo combinada com seu arquivo XAML em tempo de execução para te dar a janela completa. Isto é o que faz a chamada do método InitializeComponent(), e é por isso que ela é obrigatório para dar total funcionalidade e execução a janela.

Se voltarmos ao arquivo XAML, você notará uma porção de outros atributos no elemento Window, como Title, que define o título da janela (exibido na barra de títulos) assim como a largura e altura inicial. Existem também uma série de definições de namespaces, os quais falaremos mais nos capítulos de XAML.

Você também notará que o Visual Studio criou um controle Grid para nós dentro da Window. O Grid é um dos painéis do WPF, e enquanto isso poderia ser qualquer painel ou controle, a Window só pode ter um único controle filho, então um Panel, que por outro lado pode conter múltiplos controles filhos, normalmente é uma boa escolha. Mais pra frente, neste tutorial, daremos um foco nos diferentes tipos de painéis que você pode usar, como eles são muito importantes no WPF.

Propriedades importantes da Window

A classe Window do WPF tem um monte de atributos interessantes que você pode controlar a aparência e comportamento da janela de sua aplicação. Aqui temos uma pequena lista dos mais interessantes:

Icon - Permite que você defina o ícone da janela, que é exibido no canto superior esquerdo, à esquerda do título da janela.

ResizeMode - Este controle define se e como o usuário pode redefinir o tamanho da janela. Por padrão é CanResize, que permitirá ao usuário redefinir o tamanho da janela como qualquer outra janela, ou ao usar os botões maximizar/minimizar ou ao arrastar fora do limite. CanMinimize irá permitir ao usuário minimizar a janela, mas não maximiza-la ou aumentar ou reduzir. NoResize é o mais restrito, onde os botões de maximizar e minimizar são removidos e a janela não pode ser arrastada para maior ou menor.

ShowInTaskbar - Por padrão é verdadeiro, mas se você alterá-lo para falso, sua aplicação não será exibida no barra de tarefas do Windows. Útil para aplicações windows não-primárias ou para aplicações que devem minimizar para a bandeja.

SizeToContent - Decide se a janela deve se redimensionar automaticamente para se ajustar ao conteúdo. O padrão é Manual, que significa que a janela não irá ser redimensionada automaticamente. Outras opções são Width, Height e WidthAndHeight, e cada uma delas irão ajustar automaticamente a janela horizontalmente, verticalmente ou ambos.

Topmost - Por padrão é falso, mas se marcado como verdadeiro, sua janela irá ficar no topo das outras janelas, a menos que seja minimizada. Só é útil para situações especiais.

WindowStartupLocation - Controla a posição inicial da sua janela. O padrão é Manual, que significa que a janela será inicialmente posicionada de acordo com as propriedades Top e Left de sua janela. Outras opções são CenterOwner, que irá posicionar a janela no centro da sua janela principal, e CenterScreen, que irá posicionar a janela no centro da tela.

WindowState - Controla o estado inicial da janela. Ele pode ser Normal, Maximizado ou Minimizado. O padrão é Normal, que é o que você deve usar a menos que queira que sua aplicação inicie maximizada ou minimizada.

A classe Windows contém muitas outras propriedades, estude-as e depois vá para o próximo capítulo.