TOC

This article is currently in the process of being translated into Lithuanian (~83% done).

XAML:

Basic XAML

Ankstesniame skyriuje kalbėjome apie tai, kas yra XAML ir kam jį galima naudoti naudojate, tačiau kaip sukurti kontrolę naudojantis XAML? Kaip pamatysite kitame pavyzdyje, kontrolę su XAML sukurti yra labai paprasta - tiesiog reikia parašyti kontrolės pavadinimą apsuptą kampinių skliaustų. Pavyzdžiui, mygtukas aprašomas taip:

<Button>

XAML žymos turi būti užbaigiamos, arba parašant pabaigos žymą, arba pasvirusį brūkšnį gale pradžios žymos:

<Button></Button>

Arba

<Button />

Daugybė kontrolių leidžia jums įdėti turinį tarp pradžios ir pabaigos žymų, kas patampa kontrolės turiniu. Pavyzdžiui, Button kontrolė leidžia jums nurodyti jame rodomą tekstą tarp pradžios ir pabaigos žymų:

<Button>A button</Button>

HTML neskiria didžiųjų ir mažųjų raidžių, tačiau XAML skiria, nes kontrolės vardas turi atitikti tipo pavadinimą per .NET sistemą. Savybės taip pat, nes jos atstoja savybes per .NET sistemą. Štai mygtukas kuriame per apibrėžiame keletą savybių pridėdami atributus prie žymos:

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

Mes nustatėme FontWeight savybę, kuri padaro tekstą paryškintą, ir tada nustatėme Content savybę, kuri daro tą patį ką ir teksto rašymas tarp pradžios ir pabaigos žymių. Tačiau, visi kontrolės atributai taip pat gali būti apibrėžti taip, kur jie būna "vaikai" pagrindinės kontrolės žymos, naudojantis Kontrolė-Taškas-Savybė žymėjimu:

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

Rezultatas lygiai toks pats, taigi, šiuo atveju skirtumas yra tik sintaksės ir nieko daugiau. Tačiau daugybė kontrolių leidžia kitokį turinį negu tekstą, pvz., kitas kontroles. Štai pavyzdys, kai tame pačiame mygtuke yra skirtingų spalvų tekstas, Button viduje naudojant kelias TextBlock kontroles:

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

The Content property only allows for a single child element, so we use a WrapPanel to contain the differently colored blocks of text. Panels, like the WrapPanel, plays an important role in WPF and we will discuss them in much more details later on - for now, just consider them as containers for other controls.

Lygiai tą patį galima pasiekti naudojant šį žymėjimą, kuris yra tiesiog kitas būdas parašyti tą patį:

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

Code vs. XAML

Tikimės, kad aukščiau pateikti pavyzdžiai parodo, kad rašyti XAML yra ganėtinai lengva, tačiau yra daug būdų tai padaryti. Jei manote, kad aukščiau pateiktame pavyzdyje yra daug rašymo, kad gautumėte mygtuką su skirtingų spalvų tekstu, tada pabandykite padaryti tą patį su 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);

Žinoma, viršuje pateiktas pavyzdys gali būti aprašytas trumpiau ir naudojantis įmantresnėmis priemonėmis, tačiau manau esmė ta pati: XAML leidžia trumpai ir tiksliai apibūdinti grafines sąsajas.