TOC

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

XAML:

Basic XAML

В предишната глава говорихме за това какво е XAML и за какво се използва. Сега е време да си зададем следващият въпрос. Как да направим контролен елемент? От примера, който следва се вижда, че за създаването на контролен елемент е необходимо само да му се напише името заобиколено от ъглови скоби. Например за да се създаването на бутон се пише следното:

<Button>

XAML таговете трябва да бъдат затворени със съответния затварящ таг или с дясно наклонена черта и дясна ъглова скоба в края на съответния таг.

<Button></Button>

Или

<Button />

Много от контролите позволяват да им бъде внедрено съдержание, между начален и краен таг. Например: Текстът изписан върху бутон може да бъде зададен между започващият и завършвващ таг.

<Button>A button</Button>

Когато описвате интернет страница с езика HTML, там не е от значение дали таговете се изписват с голяма или малка буква. При XAML това е от значение, понеже името на контрола , който описваме трябва да отговаря на определен тип от .NET програмната среда. Същото важи и за името на атрибитите който отговарят на описанията на съответния контрол. В примера отдолу се описва допълнително контрола от тип бутон, като добаваме съответните атрибути и им задаваме стойности.

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

We set the FontWeight property, giving us bold text, and then we set the Content property, which is the same as writing the text between the start and end tag. However, all attributes of a control may also be defined like this, where they appear as child tags of the main control, using the Control-Dot-Property notation:

<Button>
    <Button.FontWeight>Bold</Button.FontWeight>
    <Button.Content>A button</Button.Content>
</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, който да съдържа различно оцветените текстови блокове. Панелите подобно на WrapPanel играят важна роля в WPF и ние ще ги дискутираме в детайли по-късно; засега мислете за тях като за контейнери с други контроли.

Същият резултат може да бъде постигнат с по-долния запис, който е просто друг начин да направим същото:

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

Код срещу 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 е кратък и стегнат за описание на интерфейси.