TOC

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

XAML:

Basic XAML

Oldingi bobda biz XAML va uni nima uchun ishlatishingiz haqida gaplashdik, ammo XAML da qanday qilib boshqaruvni yaratasiz? Keyingi misolda ko'rinib turganidek , XAML da boshqarusvni yaratish burchakli qavslar bilan o'ralgan holda uning nomini yozishdek oson, masalan Button quyidagicha ko'rinadi.

<Button>

XAML tegini tugatish kerak bo'lsa , tugatish tegini yozish yoki teg oxiriga oldinga slash qo'yish orqali tugatish kerak

<Button></Button>

Yoki

<Button />

Ko'pchilik boshqarish vositalari tatkibni boshlang'ich va oxirgi teglar orasiga joylashtirishga imkon beradi, undan keyin boshqaruv mazmuni. Masalan, Button boshqaruvi sizga boshlang'ich va oxirgi teglar orasida matnni ko'rsatishga imkon beradi

<Button>A button</Button>

HTML katta kichik harflarni farqlamaydi lekin bu XAML, chunki boshqaruv nomi .NET freymvork doirasidagi turga mos kelishi kerak. Xuddi shu narsa boshqaruvning xususiyatlariga mos keladigan atribut nomlari uchun ham qo'llaniladi. Tegga atributlar qo'shish orqali bir nechta xususiyatlarni aniqlaydigan button:

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

Biz FontWeight xususiyatini o'rnatdik, unga qalin matnni qo'ydik, va keyin matnni boshlash va tugatish tegi orasida yozish bilan bir xil bo'lgan Content xususiyatini o'rnatdik. Biroq, boshqarishning barcha atributlari quyidagicha belgilanishi mumkin, bunda ular Control-Dot-Property yozuvidan foydalanib, asosiy boshqaruvning farzand teglari ko'rinishida paydo bo'ladi:

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

Natija yuqoridagi bilan bir xil, shuning uchun bu holatda hammasi sintaksis va boshqa hech narsa bilan bog'liq emas. Biroq, boshqarish vositalarining ko'pi matndan tashqaridagi tarkibga, masalan, boshqa boshqarish vositalariga ruxsat beradi. Mana, bitta tugmachada turli xil rangdagi matnlar tugmachaning ichida joylashgan TextBlock-ning bir nechta elementlaridan foydalanganimizga misol.

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

Kontent xossasi faqat bitta farzand elementiga ruxsat beradi, shuning uchun biz turli xil rangdagi matn bloklarini o'z ichiga olgan holda WrapPaneldan foydalanamiz. Panellar, WrapPanel singari, WPFda muhim rol o'ynaydi va biz ularni keyinroq batafsilroq muhokama qilamiz - hozir ularni faqat boshqa boshqaruv elementlari uchun konteyner sifatida ko'rib chiqamiz.

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

Umid qilamanki, yuqoridagi misollarda siz XAMLni yozish juda oson ekanligini ko'rdingiz, lekin buni amalga oshirishning turli xil usullari mavjudligini va agar siz yuqoridagi misolda turli rangdagi matnli tugmachani olish uchun ko'p sonli markirovka deb o'ylasangiz, unda harakat qilib ko'ring. uni C # da xuddi shu narsani bajarish bilan taqqoslang:

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

Albatta, yuqoridagi misolda kamroq aniq va ko'proq sintaktik ishlatilgan holda yozilishi mumkin edi, ammo menimcha, nuqta hanuzgacha turadi: XAML chiroyli qisqa va interfeyslarni tasvirlash uchun juda lo'nda.