This article has been localized into Danish by the community.
TextBlock kontrollen
TextBlock er ikke som sådan en kontrol, da den ikke nedarver fra Control klassen, men den bruges meget på samme imåde som alle andre kontroller i WPF frameworket, så vi kalder den en kontrol for at holde tingene simple.
TextBlock kontrollen er en af de mest fundamentale kontroller i WPF - alligevel er den yderst brugbar. Den giver mulighed for at vise tekst på skærmen - meget som en Label kontrol gør - men på en mere simpel og mindre ressourcekrævende måde. En tommelfingerregel er, at en Label er til korte en-linje tekster (men kan indeholde f.eks. et billede), mens TextBlock kontrollen fungerer meget godt med fler-linjede tekster, men kan kun indeholde tekst (strenge). Både Label og TextBlock tilbyder hver deres unikke fordele, så hvilken, du skal bruge, afhænger i høj grad af situationen.
Vi har allerede brugt en TextBlock kontrol i "Hello, WPF!" artiklen, men lad os nu have et kig på TextBlock i den simpleste udgave:
<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TextBlockSample" Height="100" Width="200">
<Grid>
<TextBlock>This is a TextBlock</TextBlock>
</Grid>
</Window>
Dette er så simpelt, det kan blive, og har du læst de tidligere afsnit i denne guide, er der ikke noget nyt her. Teksten mellem TextBlock tagsne er ganske enkelt en genvej til at sætte Text egenskaben på TextBlock.
Til det næste eksempel vil vi prøve en længere tekst for at se hvordan, TextBlock håndterer den. Jeg har også tilføjet en smule margin for at få den til at se lidt bedre ud:
<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TextBlockSample" Height="100" Width="200">
<Grid>
<TextBlock Margin="10">This is a TextBlock control and it comes with a very long text</TextBlock>
</Grid>
</Window>
Håndtering af lange tekster
Som du snart vil se fra skærmbillederne, er TextBlock fuldstændig i stand til at arbejde med lange, fler-linjede tekster, men den vil ikke gøre noget som standard. I dette tilfælde er teksten for lang til at blive vist inden for vinduet, så WPF viser så meget af teksten som muligt og stopper der.
Heldigvis er der flere måder at håndtere dette på. I det næste eksempel vil jeg vise dig dem alle sammen, og derefter forklare hver enkelt af dem.
<Window x:Class="WpfTutorialSamples.Basic_controls.TextBlockSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="TextBlockSample" Height="200" Width="250">
<StackPanel>
<TextBlock Margin="10" Foreground="Red">
This is a TextBlock control<LineBreak />
with multiple lines of text.
</TextBlock>
<TextBlock Margin="10" TextTrimming="CharacterEllipsis" Foreground="Green">
This is a TextBlock control with text that may not be rendered completely, which will be indicated with an ellipsis.
</TextBlock>
<TextBlock Margin="10" TextWrapping="Wrap" Foreground="Blue">
This is a TextBlock control with automatically wrapped text, using the TextWrapping property.
</TextBlock>
</StackPanel>
</Window>
Så, vi har tre TektBlock kontroller, hver med forskellige farver (ved brug af Foreground egenskaben) for et bedre overblik. De håndterer alle det faktum, at deres tekstindhold er for langt på forskellige måder:
Den røde TextBlock bruger et LineBreak tag til manuelt at lave et linjeskift på et specifikt sted. Dette giver absolut kontrol over hvor, du ønsker teksten skal skifte linje, men det er ikke ret fleksibelt for de fleste situationer. Hvis brugeren gør vinduet større, vil teksten stadig blive ombrudt på det samme sted - også selv om der nu vil være plads nok til at have hele teksten på en linje.
Den grønne TextBlock bruger TextTrimming egenskaben med værdien CharacterEllipsis for at få TextBlock til at vise en elipsis (...), når den ikke kan få plads til mere tekst i kontrollen. Dette er en generel måde at vise, at der er mere tekst, men ikke nok plads til at vise den. Dette er udmærket, hvis du har tekst, der måske er for lang, men du absolut ikke ønsker at vise mere end en linje. Som et alternativ til CharacterEllipsis kan du bruge WordEllipsis, som vil trimme teksten for enden af det sidste mulige ord i stedet for det sidste mulige tegn, hvilket forhindrer, at et ord bliver vist delvist.
Den blå TextBlock bruger TextWrapping egenskaben med værdien Wrap for at få TextBlock til at ombryde teksten til næste linje, når der ikke er plads til mere tekst på en linje. I modsætning til den første TextBlock, hvor vi manuelt definerede hvor, teksten skulle ombrydes, sker dette fuldstændig automatesk og endda bedre: Den bliver også automatisk justeret så snart, TextBlock kontrollen får mere eller mindre plads til rådighed. Prøv at gøre vinduet i eksemplet større eller mindre, og du vil se hvordan ombrydningen opdateres til at matche situationen.
Dette var alt omkring håndtering af simple tekster i TextBlock. I næste afsnit vil vi kigge på nogle mere avancerede funktioner i TextBlock, som tillader og at lave tekst med forskellig stil inde i TextBlock og meget mere.