TOC

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

XAML:

Baza XAML

În capitolul anterior, am vorbit despre ce este XAML și la ce îl folosiți, dar cum creați un control în XAML? Așa cum veți vedea din exemplul următor, crearea unui control în XAML este la fel de ușoară ca și scrierea lui, înconjurat de paranteze unghiulare. De exemplu, un Button arată astfel:

<Button>

Etichetele XAML trebuie încheiate, fie prin scrierea etichetei de sfârșit, fie prin introducerea unui slash înainte de sfârșitul etichetei de început:

<Button></Button>

Sau

<Button />

O mulțime de controale vă permit să puneți conținut între etichetele de început și sfârșit, care este apoi conținutul controlului. De exemplu, controlerul butonului vă permite să specificați textul afișat pe acesta între etichetele de început și sfârșit:

<Button>A button</Button>

HTML nu face diferența între majuscule si minuscule, dar XAML face, deoarece numele controlului trebuie să corespundă unui tip din .NET. Același lucru este valabil și pentru numele atributelor, care corespund proprietăților controlului . Iată un buton în care definim câteva proprietăți prin adăugarea de atribute la etichetă:

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

Am setat proprietatea FontWeight, oferindu-ne un text Boldat, apoi am setat proprietatea Content, care este la fel ca scrierea textului intre tag-urile de inceput si sfarsit. Cu toate acestea, toate atributele unui control pot fi de asemenea definite astfel, în cazul în care apar ca taguri copil ale controlului principal, utilizând notația Control-Dot-Property:

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

Rezultatul este exact acelasi ca mai sus, deci in acest caz, este vorba despre sintaxa si nimic mai mult. Totusi, multe controale permit si alt continut in afara de text, de exemplu instante pentru alte controale. Aici avem un exemplu unde avem text de diferite culori pe acelasi buton folosing cateva controale TextBlock in interiorul butonului:

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

Proprietatea Content permite numai un singur element copil, deci folosim un WrapPanel pentru a conține blocurile de text colorate diferit. Panourile, precum WrapPanel, joacă un rol important în WPF și le vom discuta în mai multe detalii mai târziu - pentru moment, considerați-le doar ca fiind containere pentru alte controale.

The exact same result can be accomplished with the following markup, which is simply another way of writing the same:

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

Code vs. XAML

Sperăm că exemplele de mai sus vă arată că XAML este destul de ușor de scris, dar cu o mulțime de moduri diferite de a face acest lucru și dacă credeți că exemplul de mai sus are o mulțime markup =(codul XML) pentru a obține un buton cu text în culori diferite, atunci comparați-o cu a face exact același lucru în 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);

Desigur, exemplul de mai sus ar putea fi scris mai puțin explicit și cu mai mult zahăr sintactic, dar cred că acest un punct de vedere rămâne în picioare: XAML este destul de scurt și concis pentru descrierea interfețelor.