TOC

This article has been localized into Bulgarian by the community.

XAML:

Базов XAML

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

<Button>

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

<Button></Button>

Или

<Button />

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

<Button>A button</Button>

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

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

Когато установяваме особеността FontWeight, което ни дава получер текст и след това установим особеността Content, която е същата като писането на текст между таговете за начало и за край. Обаче всички атрибути на една контрола може също да бъдат дефинирани като това, където се явяват като дъщерни тагове на основния конрол, като се използва описанието Control-Dot-Property:

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