<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
                    
  <TextBlock Text="Ola, pessoal, aqui eh o macoratti.!" 
/>
</Page>
 
- Salve o arquivo texto com o nome alo.xaml  (No 
Bloco de Notas, para salvar com a extensão .xaml digite o nome do arquivo entre 
aspas "alo.xaml")
- Para testar clique duas vezes sobre o arquivo criado e você 
verá o navegador padrão ser aberto (IE 7 ou FireFox 3)
exibindo o 
resultado conforme abaixo:
Nota: Se outro aplicativo 
estiver mapeado para abrir os arquivos com extensão .xaml , então abra o seu 
navegador e arraste e solte o arquivo alo.xaml no navegador aberto.
Parabéns 
 , você acabou 
de criar sua primeira aplicação WPF usando XAML.
A aplicação alo.xaml é um exemplo de um XAML interpretado 
pois não houve compilação da aplicação em um executável.  Na verdade 
aplicações usando somente XAML são limitadas; em aplicações mais 
elaboradas geralmente se usa o XAML com código VB ou C#.
Observe que na aplicação temos a utilização de tags visto 
que o XAML é derivado do XML; note também que o elemento raiz é 
uma tag <Page>, mas existem outras possibilidades como a tag
<Window>.
Em uma aplicação XAML o elemento raiz sempre define dois
namespaces:
  - 
  
O namespace padrão que é mapeado para WPF e 
  usado para representação de dados no WPF; ("http://schemas.microsoft.com/winfx/2006/xaml/presentation")
 
  - 
  
O prefixo x: é usado para especificidades XAML e 
  usado para uma representação mais abrangente;( xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">)
 
  
    | 
     Os namespaces em XML 
    fornecem um escopo para nomes únicos. 
    O atributo 
    xmlns é 
    usado para mapear um nome local como um x, para o namespace atual, o qual é 
    especificado como como uma URI.  
    Elementos 
    individuais ou tagas que residem no namespace usam o nome local como prefixo 
    em suas tags. 
    O namespace diz ao 
    parse XML como o elemento no documento deverá ser interpretado.  | 
  
A sintaxe XAML
Como regra geral, um elemento em XAML é uma instância de 
um objeto e atributos são propriedades do objeto. Veja abaixo um exemplo de um 
simples objeto Button em uma página e a sua exibição no FireFox:
  
    <Page xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation” 
                    xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”> 
                    
    <Button x:Name=”btnAmarelo” 
                               
    Width=”100” 
                               
    Height=”40” 
                               
    Background=”Yellow” 
                               
    Content=”Clique me” /> 
    </Page> | 
    
      | 
  
O elemento raiz corresponde a uma instância de 
System.Windows.Controls.Page, e tudo no namespace System.Windows.Controls 
é um controle WPF.
O elemento Button corresponde a uma instância da classe
 System.Windows.Controls.Button. Os  atributos do elemento 
Button representam propriedades da instância do objeto.
Dessa forma estamos definindo valores para propriedades de 
largura(Width) , altura(Height) 
, cor de fundo(Background) e texto(Content).
Existem também um atributo x:Name que não é uma 
propriedade na classe Button, sendo um atributo especial que fornece um 
identificador único para o objeto ser acessado via código.(Seria o mesmo que 
criar uma variável do tipo Button com o nome btnAmarelo.)
Você pode usar código na linguagem VB.NET ou C# para fazer a 
mesma coisa. Veja abaixo um exemplo para o código acima na linguagem C# e VB 
.NET:
  
    | 
  
     
    Button btnAmarelo = new Button(); 
    
    btnAmarelo .Width = 100; 
    
    btnAmarelo .Height = 40; 
    
    btnAmarelo .Content = “Clique-me”; 
    
    btnAmarelo .Background = new SolidColorBrush(Colors.Yeloow);  | 
    Dim 
    btnAmarelo As 
    Button = New Button()  
    btnAmarelo .Width 
    = 100 
    btnAmarelo .Height 
    = 40 
    btnAmarelo .Content 
    = “Clique-me” 
    btnAmarelo 
    .Background = New SolidColorBrush(Colors.Yellow) | 
  
  
    | C# | 
    VB .NET | 
  
Na classe Button, Width e Height são tipos simples e a 
WPF converte o valor string 100 para um double de forma implícita. 
Existem porém muitas propriedades nos controles  que não 
são tipos simples, algumas propriedades são objetos que possuem eles mesmos 
muitas propriedades que também podem ser tipos complexos. No exemplo acima a 
propriedades Background do button é do tipo SolidColorBrush. (Note 
que no código XAML podemos simplesmente atribuir a cor diretamente a 
propriedade.)
Uma alternativa usada para fornecer valores para tipos complexos 
é ao invés de definir a propriedade Background usando um atributo usar um 
elemento filho.
Veja abaixo um exemplo de como usar esta sintaxe para o exemplo 
acima:
<Button>
    <Button.Background>
           <SolidColorBrush 
Color=”Yellow” />
     </Button.Background>
</Button>
O elemento filho é referenciado como uma propriedade do elemento 
que tem a forma :  <ClassName.PropertyName 
/>
A primeira parte é o nome da classe mais o ponto seguida pelo 
nome da propriedade. O conteúdo do elemento filho é o valor que desejamos 
definir.
A linguagem XAML permite construir a interface com o usuário e 
para torná-la mais funcional você precisa ter uma forma de efetuar o tratamento 
de eventos da sua aplicação. A XAML torna isso uma tarefa simples através da 
utilização do atributo Class :
Quando você cria uma aplicação do tipo WPF no 
Visual Studio a 
interface inicial apresentada é a mostrada abaixo:
Note no código XAML a classe :   <Window x:Class="Window1"
O namespace x coloca o 
atributo Class no namespace XAML, o que significa que este é uma 
parte geral da linguagem XAML. O atributo Class diz ao parse XAML para 
gerar uma nova classe com o nome definido, A classe deriva da classe nomeada 
pelo elemento XML ou seja será criada uma classe chamada Window1 que 
deriva da classe WIndow. A classe será gerada automaticamente em tempo de 
compilação.
A propriedade Content
Muitos dos controles que você vai usar em aplicações WPF possui 
a propriedade Content. A propriedade Content é uma propriedade 
especial e pode ser definida atribuindo diretamente o valor a propriedade:(A 
proprieade Context é equivalente a propriedade Text de um controle Windows Forms)
        <Button x:Name=”btnAmarelo”
                               
    Width=”100”
                               
    Height=”40”
                               
    Background=”Yellow”
                               
    Content=”Clique me” />
ou definindo a propriedade implicitamente usando um elemento 
filho, dessa forma as duas declarações abaixo são equivalentes:
<Button Content=”Clique me” />    
ou   
<Button>Cique me</Button>
Como a propriedade Content é do tipo Object podemos usar recursos 
avançados como desenhar uma elipse em um button. Veja o exemplo usando 
XAML:
<Button>
    
<Ellipse Width=”24” 
Height=”24”  
Fill=”Yellow” />
</Button>
Apresentando o XAMLPAD
Eu não poderia deixar de falar do XAMLPAD (fonte:
http://msdn.microsoft.com/pt-br/library/ms742398.aspx)
O XAMLPAD (xamlpad.exe) é um 
editor visual para XAML que é instalado com o SDK e pode ser encontrado 
na pasta: C:\Arquivos de programas\Microsoft SDKs\Windows\v6.0A\bin
  
    | 
     O que é o Windows SDK?  
    O Windows SDK é uma coleção de exemplos, 
    ferramentas, documentação do sistema, referências e conceitos. É muito útil 
    para ajudar o desenvolvedor a dar o ponta pé inicial no desenvolvimento para 
    a plataforma Windows. O Windows SDK ajuda o desenvolvedor a entender do que 
    ele precisa para começar a desenvolver aplicativos mais simples e até 
    aplicativos mais sofisticados. Com o SDK várias ferramentas estão presentes 
    como compiladores e o XAMLPAD.  
    Um dos motivos para a inclusão de 
    ferramentas neste SDK é que não é necessário ter o Visual Studio.NET para 
    desenvolver.  | 
  
  
    
      
      O XamlPad é um ferramenta que fornece os seguintes recursos:
        - Edição e exibição em tempo real;
 
        - As tags  XAML são salvas automaticamente para o arquivo 
        XamlPad_Salvar.XAML.
 
        - Os Modos Auto Parse e Refresh fornecem validação de sintaxe e 
        re-exibição de conteúdo;
 
        - Fornece suporte de localização para seqüências de caracteres 
        simples. Os Inválidos são exibidos em vermelho;
 
        - Erros são relatados na barra de status na parte inferior esquerda do 
        janela principal;
 
        - A expansão do o conteúdo em uma árvore visual permite a você exibir 
        valores de propriedade do conteúdo;
 
        - Você pode carregar um arquivo existente no XamlPad, passando o nome 
        de arquivo como um argumento de linha de comando;
 
      
     
   
 
Veja a seguir a cara do XAMLPAD:
Nota: Observe o modo de visualização do código XAML e do resultado.
O modo 
automático de análise permite que você consulte erros de sintaxe logo que você 
vai digitando .
Caso 
contrário, a análise automática estiver ativada, você não verá erros até que 
você clique no  Botão  Atualizar.
Você pode 
ativar e desativar o modo de análise Automática clicando no botão
Análise automática  na parte superior de XAMLPAD.
Quando um 
erro for encontrado, todo  o conteúdo é exibido em uma cor vermelha, e as 
informações de status na parte inferior do  
XAMLPAD os  erros de sintaxe 
específico.
Um hiperlink à 
direita do erro exibido permite que você ir rapidamente para a área de conteúdo 
que contém o erro. 
Dependendo do seu interesse a XAML pode vir a ser uma grande aliada nos seus 
projetos, e, esta breve introdução tem como objetivo aguçar a sua curiosidade para 
os recursos da linguagem.
Até o próximo artigo XAML...
Referências: