This article is currently in the process of being translated into Croatian (~99% done).
Basic XAML
U prethodnom poglavlju smo pričali o tome što je XAML i za što se koristi, ali kako kreirati kontrolu u XAMLu? Kao što ćete vidjeti u sljedećem primjeru, kreiranje kontrole u XAMLu je jednostavno poput pisanja imena kontrole u izlomljenim zagradama <>. Na primjer, Button (gumb) izgleda ovako:
<Button>
XAML tag treba imati i završetak, bilo pisanjem krajnjeg taga ili stavljanjem kose crte na kraj početnog taga:
<Button></Button>
Ili
<Button />
Mnoge kontrole omogućuju da se stavi sadržaj između početnog i završnog taga, koji zatim postaje sadržaj kontrole. Na primjer, kontrola Button omogućuje da se definira tekst prikazan na gumbu upisivanjem teksta između početnog i završnog taga:
<Button>A button</Button>
HTML ne razlikuje velika i mala slova, ali XAML razlikuje, zato jer naziv kontrole mora odgovarati tipu u .NET sustavu. Isto vrijedi za imena atributa, koji odgovaraju svojstvima kontrole. Ovdje je gumb kojem definiramo nekoliko svojstava dodajući atribute tagovima:
<Button FontWeight="Bold" Content="A button" />
Setiramo FontWeight svojstvo, što nam daje deblji tekst i zatim setiramo Content svojstvo što je isto kao i pisanje teksta između početnog i završnog taga. Međutim, svi atributi kontrole se mogu definirati i na sljedeći način, gdje se ponašaju kao djeca glavne kontrole, koristeći notaciju Kontrola-Točka-Svojstvo:
<Button>
<Button.FontWeight>Bold</Button.FontWeight>
<Button.Content>A button</Button.Content>
</Button>
Rezultat je identičan kao i prijašnji, pa u ovom slučaju se radi samo o drukčijoj sintaksi i ničem drugom. Međutim, mnoge kontrole dopuštaju sadržaj drukčiji od teksta, kao naprimjer da sadržaj mogu biti ostale kontrole. Ovdje je primjer gdje imamo tekst u različitim bojama na istom gumbu koristeći nekoliko TextBlock kontrola unutar kontrole Button:
<Button>
<Button.FontWeight>Bold</Button.FontWeight>
<Button.Content>
<WrapPanel>
<TextBlock Foreground="Blue">Multi</TextBlock>
<TextBlock Foreground="Red">Color</TextBlock>
<TextBlock>Button</TextBlock>
</WrapPanel>
</Button.Content>
</Button>
Svojstvo Content može sadržavati samo jedan element, te stoga koristimo WrapPanel da sadržimo blokove teksta različitih boja. Paneli, poput WrapPanela, igraju važnu ulogu u WPFu i biti će mnogo detaljnije opisani u kasnijim poglavljima - zasad, smatrajte ih samo kao spremnike za ostale kontrole.
Identičan rezultat se može postići sljedećim označavanjem, što je jednostavno drukčiji način pisanja iste stvari:
<Button FontWeight="Bold">
<WrapPanel>
<TextBlock Foreground="Blue">Multi</TextBlock>
<TextBlock Foreground="Red">Color</TextBlock>
<TextBlock>Button</TextBlock>
</WrapPanel>
</Button>
Kod vs. XAML
Nadamo se da su gornji primjeri pokazali da je XAML prilično jednostavan za pisanje, ali s više različitih mogućnosti, te ako smatrate da gornji primjeri sadržavaju puno označavanja da se dobije gumb s tekstom u različitim bojama, pokušajte usporediti kako bi isti rezultat dobili programiranjem u C#:
Button btn = new Button();
btn.FontWeight = FontWeights.Bold;
WrapPanel pnl = new WrapPanel();
TextBlock txt = new TextBlock();
txt.Text = "Multi";
txt.Foreground = Brushes.Blue;
pnl.Children.Add(txt);
txt = new TextBlock();
txt.Text = "Color";
txt.Foreground = Brushes.Red;
pnl.Children.Add(txt);
txt = new TextBlock();
txt.Text = "Button";
pnl.Children.Add(txt);
btn.Content = pnl;
pnlMain.Children.Add(btn);
Naravno da bi se gornji primjer mogao napisati manje eksplicitno i pomoću raznih sintaktičkih trikova, ali smatram da je poanta jasna: XAML je prilično kratak i jasan za opisivanje sučelja.