TOC

This article has been localized into Slovak by the community.

XAML:

Základy XAML

V predchádzajúcej kapitole sme hovorili o tom, čo je XAML a načo sa používa, ale ako vytvoríte kontrolku v XAML? Ako uvidíte z nasledujúceho príkladu, vytvorenie ovládacieho prvku v XAML je rovnako jednoduché ako napísanie jeho mena, obklopené uhlovými zátvorkami. Napríklad Button (tlačidlo) vypadá takto:

<Button>

Značky XAML sa musia ukončiť buď napísaním koncovej značky alebo umiestnením lomítka na konci začiatočnej značky:

<Button></Button>

alebo

<Button />

Mnoho ovládacích prvkov umožňuje vložiť obsah medzi začiatočné a koncové značky, čo je obsah ovládacieho prvku. Ovládací prvok Button vám napríklad umožňuje určiť na ňom zobrazený text medzi štartovacími a koncovými značkami:

<Button>A button</Button>

HTML nerozlišuje veľké a malé písmená, ale XAML áno, pretože meno kontrolky musí zodpovedať typu v .NET framework. To isté platí pre názvy atribútov, ktoré zodpovedajú vlastnostiam ovládacieho prvku. Tu je tlačidlo, v ktorom definujeme niekoľko vlastností pridaním atribútov do značky:

<Button FontWeight="Bold" Content="A button" />

Nastavili sme vlastnosť 'FontWeight', ktorá nám dala tučný text a potom sme nastavili vlastnosť 'Content', ktorá je rovnaká ako písanie textu medzi začiatočnou a koncovou značkou. Avšak všetky atribúty ovládacieho prvku môžu byť tiež definované tak, že sa zobrazia ako podriadené značky hlavného ovládacieho prvku pomocou zápisu "Kontrolka-Bodka-Vlastnosť" (bodková notácia):

<Button>
    <Button.FontWeight>Bold</Button.FontWeight>
    <Button.Content>A button</Button.Content>
</Button>

Výsledok je úplne rovnaký ako vyššie, takže v tomto prípade ide o syntax a nič iné. Mnohé ovládacie prvky však umožňujú vložiť aj iný obsah ako text, napríklad iné ovládacie prvky. Tu je príklad, v ktorom máme text v rôznych farbách na rovnakom tlačidle pomocou niekoľkých ovládacích prvkov TextBlock vnútri tlačidla:

<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>

Vlastnosť Content umožňuje len jeden podriadený prvok, takže používame WrapPanel, ktorý obsahuje rôzne farebné bloky textu. Panely, rovnako ako WrapPanel, zohrávajú dôležitú úlohu vo WPF a budeme o nich hovoriť oveľa podrobnejšie neskôr - zatiaľ ich považujme za kontajnery pre iné kontrolky.

Presne rovnaký výsledok možno dosiahnuť nasledovne, čo je jednoducho ďalší spôsob písania toho istého:

<Button FontWeight="Bold">
    <WrapPanel>
        <TextBlock Foreground="Blue">Multi</TextBlock>
        <TextBlock Foreground="Red">Color</TextBlock>
        <TextBlock>Button</TextBlock>
    </WrapPanel>
</Button>

Kód vs. XAML

Dúfajme, že vyššie uvedené príklady vám ukážu, že XAML je veľmi jednoduché písať viacerými spôsobmi, a ak si myslíte, že vo vyššie uvedenom príklade je veľa značiek na to, aby ste dostali tlačidlo s textom v rôznych farbách, skúste urobiť presne to isté v 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);

Samozrejme, uvedený príklad by mohol byť napísaný menej explicitne, ale myslím, že podstata je jasná: XAML je dosť krátky a stručný na vytvorenie užívateľského rozhrania.