WPF - Visão geral do XAML
Uma das primeiras coisas que você encontrará ao trabalhar com o WPF é o XAML. XAML significa Extensible Application Markup Language. É uma linguagem simples e declarativa baseada em XML.
Em XAML, é muito fácil criar, inicializar e definir propriedades de objetos com relações hierárquicas.
É usado principalmente para projetar GUIs, no entanto, pode ser usado para outros fins também, por exemplo, para declarar fluxo de trabalho no Workflow Foundation.
Sintaxe Básica
Ao criar seu novo projeto WPF, você encontrará parte do código XAML por padrão em MainWindow.xaml, conforme mostrado abaixo.
<Window x:Class = "Resources.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "525">
<Grid>
</Grid>
</Window>
O arquivo XAML acima contém diferentes tipos de informações. A tabela a seguir explica resumidamente a função de cada informação.
Em formação | Descrição |
---|---|
<Janela | É o elemento de objeto de abertura ou contêiner da raiz. |
x: Class = "Resources.MainWindow" | É uma declaração de classe parcial que conecta a marcação ao código de classe parcial definido por trás. |
xmlns = "http://schemas.microsoft.com/win fx / 2006 / xaml / presentation" | Mapeia o namespace XAML padrão para cliente / estrutura WPF |
xmlns: x = "http://schemas.microsoft.com/w infx / 2006 / xaml" | Namespace XAML para linguagem XAML que mapeia para x: prefixo |
> | Fim do elemento de objeto da raiz |
<Grid> </Grid> |
É iniciar e fechar tags de um objeto de grade vazio. |
</Window> | Fechando o elemento do objeto |
As regras de sintaxe para XAML são quase semelhantes a XML. Se você examinar um documento XAML, perceberá que, na verdade, ele é um arquivo XML válido, mas um arquivo XML não é necessariamente um arquivo XAML. É porque em XML, o valor dos atributos deve ser uma string, enquanto em XAML, pode ser um objeto diferente que é conhecido como sintaxe de elemento de propriedade.
A sintaxe de um elemento Object começa com um colchete angular esquerdo (<) seguido pelo nome de um objeto, por exemplo, Botão.
Defina algumas propriedades e atributos desse elemento de objeto.
O elemento Object deve ser fechado por uma barra (/) seguida imediatamente por um colchete angular direito (>).
Exemplo de objeto simples sem elemento filho
<Button/>
Exemplo de elemento de objeto com alguns atributos
<Button Content = "Click Me" Height = "30" Width = "60" />
Exemplo de uma sintaxe alternativa para definir propriedades (sintaxe de elemento de propriedade)
<Button>
<Button.Content>Click Me</Button.Content>
<Button.Height>30</Button.Height>
<Button.Width>60</Button.Width>
</Button>
Exemplo de objeto com elemento filho: StackPanel contém Textblock como elemento filho
<StackPanel Orientation = "Horizontal">
<TextBlock Text = "Hello"/>
</StackPanel>
Por que XAML no WPF
O XAML não é apenas o recurso mais conhecido do WPF, mas também um dos recursos mais incompreendidos. Se você tem exposição ao WPF, deve ter ouvido falar do XAML; mas observe os dois fatos menos conhecidos a seguir sobre XAML -
- WPF não precisa de XAML
- XAML não precisa de WPF
Na verdade, são peças tecnológicas separáveis. Para entender como isso pode ser, vamos dar uma olhada em um exemplo simples em que um botão é criado com algumas propriedades em XAML.
<Window x:Class = "WPFXAMLOverview.MainWindow"
xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml"
Title = "MainWindow" Height = "350" Width = "604">
<StackPanel>
<Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left"
Margin = "150" VerticalAlignment = "Top" Width = "75" />
</StackPanel>
</Window>
Caso opte por não usar XAML no WPF, você também pode obter o mesmo resultado da GUI com a linguagem procedural. Vamos dar uma olhada no mesmo exemplo, mas desta vez, vamos criar um botão em C #.
using System.Windows;
using System.Windows.Controls;
namespace WPFXAMLOverview {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public MainWindow() {
InitializeComponent();
// Create the StackPanel
StackPanel stackPanel = new StackPanel();
this.Content = stackPanel;
// Create the Button
Button button = new Button();
button.Content = "Click Me";
button.HorizontalAlignment = HorizontalAlignment.Left;
button.Margin = new Thickness(150);
button.VerticalAlignment = VerticalAlignment.Top;
button.Width = 75;
stackPanel.Children.Add(button);
}
}
}
Ao compilar e executar o código XAML ou o código C #, você verá a mesma saída mostrada abaixo.
A partir do exemplo acima, está claro que o que você pode fazer em XAML para criar, inicializar e definir propriedades de objetos, as mesmas tarefas também podem ser feitas usando código.
XAML é apenas outra maneira simples e fácil de projetar elementos de interface do usuário.
Com o XAML, isso não significa que o que você pode fazer para projetar elementos de interface do usuário é a única maneira. Você pode declarar os objetos em XAML ou defini-los usando código.
O XAML é opcional, mas, apesar disso, é o cerne do design do WPF.
O objetivo do XAML é permitir que designers visuais criem elementos de interface do usuário diretamente.
O WPF visa possibilitar o controle de todos os aspectos visuais da interface do usuário a partir da marcação.