This article has been localized into Danish by the community.
Label kontrollen
Label kontrollen - i sin mest simple form - vil i høj grad se ud som TextBlock kontrollen, som vi brugte i an anden artikel. Du vil dog hurtigt bemærke, at i stedet for en Text egenskab har Label en Content egenskab. Grunden til dette er, at Label kontrollen kan være vært for en hvilken som helst slags kontrol direkte inde i den i stedet for blot tekst. Indholdet kan også være en streng, som du vil se i dette første og meget enkle eksempel:
<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="LabelControlSample" Height="100" Width="200">
<Grid>
<Label Content="This is a Label control." />
</Grid>
</Window>
En anden ting, du måske bemærker, er det faktum, at Label kontrollen som standard har en smule padding, hvilket giver mulighed for, at teksten bliver vist nogle få pixels fra det øvre venstre hjørne. Dette er ikke tilfældet for TextBlock kontrollen, hvor du skal angive dette manuelt.
I et simpelt tilfælde som dette, hvor indholdet kun er en streng, vil Label kontrollen faktisk lave en TextBlock internt og vise din streng i den.
Label kontrollen vs. TextBlock kontrollen
Så hvorfor bruge en Label i det hele taget? Faktisk er der nogle få vigtige forskelle mellem Label og TextBlock. TextBlock kontrollen giver dig kun mulighed for at vise en tekst streng, mens Label kontrollen også giver dig mulighed for at:
- Angive en kant
- Vise andre kontroller, f. eks. et billede
- Bruge skabelon-baseret indhold gennem ContentTemplate egenskaben
- Bruge genvejstaster for at give fokus på relaterede kontroller
Det sidste punkt er faktisk en af de primære grunde til at bruge en Label frem for en TextBlock kontrol. Når du kun ønsker at vise en simple tekst, bør du bruge TextBlock kontrollen, da den er lettere og har bedre ydelse end Label kontrollen i de fleste tilfælde.
Label og Genvejstaster (mnemoteknisk)
I Windows og også i andre operativsystemer er det almindelig praksis, at du har adgang til kontroller i en dialog ved at holde [Alt]-tasten nede og trykke på et tegn, som svarer til den kontrol, du ønsker adgang til. Tegnet, der skal trykkes på, bliver markeret, når du holder [Alt]-tasten nede. TextBlock kontroller understøtter ikke denne funktionalitet, men Label kontrollen gør, så til kontroletiketter er Label kontrollen normalt et perfekt valg. Lad os se på et eksempel på det i praksis:
<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="LabelControlSample" Height="180" Width="250">
<StackPanel Margin="10">
<Label Content="_Name:" Target="{Binding ElementName=txtName}" />
<TextBox Name="txtName" />
<Label Content="_Mail:" Target="{Binding ElementName=txtMail}" />
<TextBox Name="txtMail" />
</StackPanel>
</Window>
Skærmbilledet viser vores dialog, som den ser ud, når Alt-tasten er holdt nede. Prøv at køre eksemplet, hold [Alt]-tasten ned og tryk N og M. Du vil se hvordan fokus flyttes mellem de to tekstbokse.
Så, der er flere nye koncepter her. Først og fremmest definerer vi genvejstasten ved at sætte en understregning (_) før tegnet. Det behøver ikke være det første tegn, det kan være før et hvilket som helst af tegnene i labelindholdet. Almindelig praksis er at bruge det første tegn, som ikke allerede er brugt som genvejstast for en anden kontrol.
Vi bruger Target egenskaben til at forbinde Label kontrollen og den ønskede kontrol. Vi bruger en standard WPF binding til dette ved hjælp af ElementName egenskaben, hvilket vi vil beskrive senere i dette selvstudie. Bindingen er baseret på kontrollens navn, så hvis du ændrer dette navn, skal du også huske at ændre bindingen.
Brug af kontroller som Label indhold
Som nævnt tidligere tillader Label kontrollen, at du anvender andre kontroller i den og samtidig bibeholder de øvrige fordele. Lad os prøve et eksempel, hvor vi har både et billede og en smule tekst i Label kontrollen, samtidig med, at vi har en genvejstast for hver af etiketterne:
<Window x:Class="WpfTutorialSamples.Basic_controls.LabelControlAdvancedSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="LabelControlAdvancedSample" Height="180" Width="250">
<StackPanel Margin="10">
<Label Target="{Binding ElementName=txtName}">
<StackPanel Orientation="Horizontal">
<Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_green.png" />
<AccessText Text="_Name:" />
</StackPanel>
</Label>
<TextBox Name="txtName" />
<Label Target="{Binding ElementName=txtMail}">
<StackPanel Orientation="Horizontal">
<Image Source="http://cdn1.iconfinder.com/data/icons/fatcow/16/bullet_blue.png" />
<AccessText Text="_Mail:" />
</StackPanel>
</Label>
<TextBox Name="txtMail" />
</StackPanel>
</Window>
Dette er blot en udvidet version af forrige eksempel - i stedet for en simpel tekststreng har vores Label nu både et billede og en smule tekst (inde i AccessText kontrollen, som tillader os at anvende en genvejstast for etiketten). Begge kontroller er inde i en horisontal StackPanel, da Label kontrollen som alle andre ContentControl nedarvninger kun kan have en direkte child-kontrol.
Image kontrollen, der beskrives senere i dette selvstudie, bruger et eksternt billede - dette er KUN for demonstrationsformål og er IKKE en god ide for de fleste reelle applikationer.
Resume
I de fleste situationer gør Label kontrollen nøjagtig hvad navnet antyder: Det opfører sig som en tekstetiket for en anden kontrol. Dette er det primære formål for den. I de fleste andre tilfælde skal du sandsynligvis bruge en TextBlock kontrol eller en af de andre tekstbeholdere, som WPF tilbyder.