TOC

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

XAML:

Basic XAML

Նախորդ բաժնում մենք նկարագրեցինք, թե ինչ է XAML - ը և ինչի համար է այն օգտագործվում։ Իսկ ինչպե՞ս ստեղծենք բլոկ XAML - ում։ Ինչպես երևում է օրինակում XAML - ում բլոկ ստեղծելը բավականին հեշտ է, անհրաժեշտ է եռանկյուն փակագծերում գրել անվանումը։ Օրինակ՝ կոճակ կարելի ստեղծել հետևյալ կերպ․

<Button>

XAML - ում թագերը պետք է փակվեն՝ թագի վերջում ավելացնելով թեք գիծ կամ ունենալ բացող և փակող թագեր․

<Button></Button>

Կամ

<Button />

Շատ բլոկեր թույլատրում են սկսվող և ավարտվող թագերի միջև ունենալ պարունակություն։ Օրինակ Button բլոկը թույլ է տալիս նշել որևէ տեքստ սկսվող և ավարտվող թագերի միջև․

<Button>A button</Button>

HTML -ում տարրերը կարող են գրվել և՛ մեծատառ, և՛ փոքրատառ, իսկ XAML - ում տարրերի մեծատառ և փոքրատառ լինելու դեպքում կա տարբերություն, քանի որ դրանց անունները պետք է համապատասխանեն .NET framework - ի տիպերի հետ։ Նույնը վերաբերում է նաև ատրիբուտների անուններին, որոնք պետք է համապատասխան լինեն հատկությունների անունների հետ։ Ահա օրինակ, որտեղ մենք սահմանում ենք հատկություններ՝ թեգին ավելացնելով ատրիբուտներ․

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

Նշում ենք FontWeight հատկությունը, որը դարձնում է տեքստը թավ և այնուհետև նշում ենք Content հատկությունը, որը նույնն է, ինչ պարունակությունը գրենք բացող և փակող թեգերի միջև։ Սակայն բոլոր ատրիբուտները կարող են սահմանվել նման կերպով, երբ դրանք հայտնվում են գլխավոր բլոկի ներքին թեգում՝ օգտագործելով Control-Dot-Property նշագրիչը․

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

Վերևում մենք ստանում ենք ճիշտ նույն արժեքը և սա միայն գրելաձևի տարբերություն է։ Սակայն շատ բլոկեր թույլ են տալիս ունենալ այլ պարունակություն բացի տեքստից։ Այս օրինակում Button - ի մեջ օգտագործելով մի քանի TextBlock նույն կոճակի վրա նշում ենք տեքստ տարբեր գույներով․

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

Content հատկությունը թույլ է տալիս ունենալ միայն եզակի ներքին տարր, այդ պատճառով մենք կօգտագործենք WrapPanel տարբեր գույներով տեքստ պահելու համար։ Panel - ները, ինչպես WrapPanel - ը կարևոր նշանակություն ունեն WPF - ում, սակայն մենք մանրամասն կանդրադառնանք դրանց ավելի ուշ, իսկ հիմա մենք կհամարենք Panel - ները որպես կոնտեյներ այլ բլոկերի համար։

Ճիշտ նույն արդյունքին կարելի է հասնել հետևյալ պարզ նշագրիչով․

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

Code vs. XAML

Հուսանք, որ վերևում նշված օրինակները ցույց տվեցին, որ XAML - ը բավականին հեշտ է գրել, և թույլ է տալիս հասնել նույն արդյունքին տարբեր եղանակներով։ Եթե դուք կարծում եք, որ վերը նշված օրինակում տեքստին տարբեր գույներ հաղորդելու համար օգտագործված են շատ նշագրիչներ, ապա այն փորձեք համեմատել իրականացնելով նույնը 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);

Իհարկե վերը նշված օրինակը կարող է գրվել ավելի կարճ, բայց ես կարծում եմ այնուամենայնիվ XAML - ը բավականին պարզ է հակիրճ ինտերֆեյս նկարագրելու համար։