XAML*
XAML är ett språk som används i bl.a WPF-program för att beskriva det grafiska gränssnittet. Det liknar delvis HTML och andra XML-släktingar, i det att man skapar element genom att använda start- och sluttagar samt attribut som (ofta) skrivs i starttaggarna.
Installera gärna NoesisGUI XAML-extension i Visual Studio Code för extra hjälp att skriva koden.
Element
Elementen är UIts byggstenar; de är saker som knappar och textrutor. En del av dem är rena layoutelement, som t.ex. StackPanel som man lägger andra element inuti. Varje element kan olika attribut. Ibland kallas elementen också kontroller. De kan skrivas med start- och sluttagg eller som självavslutande taggar.
Attribut
Det finns många olika attribut tillgängliga för olika element. De kan skrivas antingen inuti starttaggen för elementet eller som child-taggar.
x:Name
Ger elementet ett unikt namn
Text/Content
Get elementet ett innehåll, eller en text. Vissa typer av element har text, men de flesta har Content istället.
FontSize
Anger textens storlek.
Margin
Lägger till utrymme kring elementet.
Events
Varje element har ett antal events som kod kan reagera på – t.ex. att en knapp klickas på eller att en kryssruta kryssas i eller ur.
Ett sätt att göra detta är genom att ange event i XAML och sedan ha en matchande metod i fönstrets cs-fil.
Genom att analysera sender kan man få veta mer – om t.ex. en och samma metod anropas från flera olika objekt kan det vara bra att veta vilket.
Eventbindning i kod
För att helt separera kod från XAML kan man sköta bindningen i C# istället. Det gör också att man kan få flera olika metoder att anropas när en event sker.
Man behöver en referens till objektet; den kan man t.ex. skaffa genom att använda FindName för att hitta objektet man vill lägga till en bindning till, och casta objektet till rätt datatyp.
Sedan utnyttjar man att alla events ligger inlagda i datatypen som delegates.
FindName
En metod som letar igenom alla sub-objekt efter något med angivet x:Name
. Det man får som resultat är alltid bara ett generellt object, så resultatet behöver castas.
<Button>
En knapp som man kan klicka på. Har Click-event.
<TextBlock>
Ett block som innehåller text.
<StackPanel>
En container-panel som används för att stapla andra element. Orientation avgör i vilken riktning; default är Vertical (elementen staplas uppifrån och ner).
Man kan lägga in vilka element som helst i en StackPanel – inklusive andra StackPanels.
<CheckBox>
Kryssrutor, där flera kan vara ikryssade samtidigt. Har eventen Checked och Unchecked.
<RadioButton>
Liknande Checkbox, men bara en kan vara ifylld i taget. Bra när användare ska få välja mellan olika saker, och bara får välja en av dem. Har också eventen Checked och Unchecked.
<Image>
Lägger in en bild! Har attributen Source, Width och Height som kan vara användbara. Source behöver deklareras som en resursfil, eller på annat sätt placeras i samma mapp som exe-filen när programmet kompilerats.
<ListBox>
En lista med text-items dit man kan lägga in nya saker eller ta bort gamla. Det finns C#-metoder för att manipulera listans innehåll, och ett SelectionChanged-event som kan bindas till C#-kod. SelectionMode-attributet används för att göra det möjligt för användare att markera flera saker i listan samtidigt.
<Grid>*
<Grid.Rowdefinitions>
<Grid.Columndefinitions>
Element i ett grid
När man lägger in andra element i ett grid, så anger man vilken kolumn och vilken rad, alltså vilken position, elementet ska läggas i genom Grid.Row och Grid.Column.
Last updated