TOC

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

XAML:

Basic XAML

In die vorige hoofstuk het ons gepraat oor wat XAML is, en waarvoor dit gebruik word, maar hoe word 'n kontrole geskep in XAML? Soos jy sal sien in die volgende voorbeeld, is dit so maklik as om sy naam te skryf, omring deur hoekhakies. Byvoorbeeld, 'n knoppie lyk soos volg:

<Button>

XAML etiket moet afgesluit word, of deur die skryf van 'n eind-etiket of deur 'n voorwaardse skuinsstreep aan die einde van die begin etiket.

<Button></Button>

Of

<Button />

Baie beheer voorwerpe laat jou toe om iets in te vul tussen die begin en eind etikette, wat dan ook die inhoud van die beheer voorwerp is.

<Button>A button</Button>

HTML is nie hooflettergevoelig nie, maar XAML is omdat die kontrolenaam moet ooreenstem met 'n tipe in die NET-raamwerk. Dieselfde geld vir attribuutname wat ooreenstem met die eienskappe van die kontrole. Hier is 'n knoppie waar ons 'n paar eienskappe definieer deur eienskappe by die tag te voeg:

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

Ons stel die FontWeight-eienskap in, gee ons vet teks, en dan stel ons die Content-eienskap, wat dieselfde is as om die teks tussen die begin- en einde-etiket te skryf. Al die eienskappe van 'n kontrole kan egter ook soos volg gedefinieër word, waar dit verskyn as kindermerke van die hoofkontrole, met die notas Control-Dot-Property:

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

Die resultaat is presies dieselfde as hierbo, dus in hierdie geval gaan dit oor sintaksis en niks anders nie. Baie kontroles laat egter ander inhoud toe as teks, byvoorbeeld ander kontroles. Hier is 'n voorbeeld waar ons teks in verskillende kleure op dieselfde knoppie het deur verskillende TextBlock-kontroles binne-in die knop te gebruik:

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

Die inhoud-eienskap maak slegs 'n enkele kinderelement moontlik, daarom gebruik ons ​​'n WrapPanel om blokke teks met verskillende kleure te bevat. Panele, soos die WrapPanel, speel 'n belangrike rol in WPF en ons bespreek dit later in baie meer besonderhede - beskou dit as nou as houers vir ander kontroles.

Dieselfde resultaat kan bereik word met die volgende opmerkings, wat eenvoudig 'n ander manier is om dieselfde te skryf:

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

Code vs. XAML

Hopelik wys bogenoemde voorbeelde u dat XAML redelik maklik is om te skryf, maar met baie verskillende maniere om dit te doen, en as u dink dat die voorbeeld hierbo baie opmerklik is om 'n knoppie met teks in verskillende kleure te kry, probeer dan vergelyk dit met presies dieselfde ding in 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);

Natuurlik kan bogenoemde voorbeeld minder eksplisiet geskryf word en meer sintaktiese suiker gebruik word, maar ek dink die punt staan ​​nog steeds: XAML is redelik kort en bondig vir die beskrywing van koppelvlakke.