TOC

This article has been localized into Slovenian by the community.

XAML:

Osnove XAML

V prejšnjem poglavju smo govorili o tem, kaj je XAML in za kaj se ga uporablja. Kako pa ustvarite kontrolo v XAML? Kot boste videli iz naslednjega primera, je ustvarjanje kontrol v XAML tako enostavno kot pisanje imena, obdano s kotnimi oklepaji. Na primer, gumb izgleda tako:

<Button>

Oznake XAML je treba končati bodisi s pisanjem končne oznake bodisi s postavitvijo črtice na koncu začetne oznake:

<Button></Button>

Ali

<Button />

Veliko kontrol vam omogoča, da vsebino postavite med začetne in končne oznake, kar je nato vsebina nadzora. Na primer kontrola pri gumbu omogoča, da med začetno in končno oznako določite besedilo, ki bo nato prikazano na njem:

<Button>A button</Button>

HTML sicer ne razlikuje velikih in malih črk, XAML pa jih, ker mora ime nadzora ustrezati vrsti v .NET razvojnem ogrodju. Enako velja za imena atributov, saj morajo ustrezti lastnosti kontrle. Spodaj je gumb, kjer določimo nekaj lastnosti tako, da oznaki dodamo atribute:

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

Nastavimo lastnost FontWeight, ki nam dodeli krepko besedilo in nato nastavimo lastnost Content, ki je enaka pisanju besedila med začetno in končno oznako. Vendar so lahko vsi atributi nadzora definirani tudi tako, če se pojavijo kot nadrejene oznake glavnega elementa z uporabo zapisa Control-Dot-Properties:

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

Rezultat je popolnoma enak kot zgoraj, zato gre v tem primeru za skladnjo in nič drugega. Vendar veliko kontrol omogoča druge vsebine, poleg besedila, na primer druge kontrole. Tu je primer, kjer imamo na istem gumbu besedilo v različnih barvah z uporabo več kontrol TextBlock znotraj istega gumba:

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

Lastnost Content omogoča samo en podrejeni element, zato uporabljamo WrapPanel, da vsebuje različno obarvane bloke besedila. Plošče, kot je WrapPanel, igrajo pomembno vlogo v WPF in o njih bomo podrobneje razpravljali pozneje - zaenkrat jih upoštevajte kot posode za druge kontrole.

Natančno enak rezultat lahko dosežemo z naslednjo oznako. To je le drug način pisanja istega:

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

Koda ali XAML

Upamo, da zgornji primeri prikazujejo, da je v XAML dokaj enostavno pisati, vendar z veliko različnimi načini. In če menite, da je zgornji primer vsebuje veliko oznak, da dobite gumb z besedilom v različnih barvah, poskusite primerjamo primejrati isto zadevo kako se le to doseže 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);

Seveda bi zgornji primer lahko napisali manj nazorno in z uporabo več sintetičnih sladkorčkev, vendar menim, da še vedno velja: XAML je dokaj kratek in jedrnat za opisovanje vmesnikov.