This article has been localized into Hungarian by the community.
A TextBlock vezérlő
A TextBlock önmagában nem egy vezérlő, mivel nem örököl a Control class-ból, de nagyrészt ugyanúgy kell használni, mint bármely másik WPF vezérlőt, úgyhogy mi is vezérlőnek fogjuk hívni az egyszerűség végett.
A TextBlock vezérlő egyike a legalapvetőbb vezérlőknek a WPF-ben, mégis nagyon hasznos. Szöveget jeleníthetsz meg vele a képernyőn, pont, mint a Label vezérlővel, de egy egyszerűbb és kevésbé erőforrás igényesebb módon. Közös megegyezés alapján a Label rövid, egysoros szövegeknek van (de tartalmazhat képet), míg a TextBlock jól működik többsoros stringek esetén is, de csak szöveget tárolhat (stringet). A Label és a TextBlock is sajátos előnyökkel jár, így hogy melyiket kell használnod, az nagyban a helyzettől függ.
Már használtunk egy TextBlock vezérlőt a "Hello, WPF!" cikkben, de most vessünk egy pillantást a Textblock-ra a legegyszerűbb formájában:
<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>
Ennél egyszerűbb nem is lehetne, és ha már olvastad az előző oktató fejezeteket, akkor nincs is benne semmi új. A szöveg a TextBlock belsejében egyszerűen egy rövid módja a TextBlock Text tulajdonságának beállítására.
A következő példában próbálkozzunk egy hosszabb szöveggel, hogy kiderüljön, miként bánik vele a TextBlock. Csinosítás végett hozzáadtam egy kis margót is.
<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>
Hosszú stringek kezelése
Hamarosan rájössz a képernyőkép alapján, hogy a TextBlock tökéletesen képes kezelni a hosszú, többsoros szövegeket, de magától nem csinál semmi egyebet. Ebben az esetben a szöveg túl hosszú, ahhoz, hogy az egész elférjen az ablakban, így a WPF csak azt jeleníti meg a mi kifér, a többit nem.
Szerencsére több mód is van ennek a kezelésére. A következő példában megmutatom az összeset, és azután külön el is magyarázom őket:
<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>
Tehát, van három TextBlock vezérlőnk, mindegyik más-más színben (a Foreground tulajdonság használatával) a könnyebb áttekinthetőség érdekében. Mindegyik másként kezeli azt, hogy túl hosszú benne a szöveg:
A piros TextBlock egy LineBreak elem használatával manuálisan töri meg a sort a kívánt helyen. Ez teljes szabadságot ad afelett, hogy hol akarod a szöveget új sorban folytatni, de nem túl rugalmas a legtöbb helyzetben. Ha a felhasználó kinagyítja az ablakot, a szöveg ugyan abban a pozícióban fog törni, még ha most már elég hely is van, hogy az egész szöveg kiférjen egy sorban.
A zöld TextBlock a TextTrimming tulajdonság CharacterEllipsis értéke felhasználásával jelzi a TextBlock végén a kihagyást (...), amikor már nem fér több szöveg a vezérlőbe. Ez gyakori eljárás annak jelzésére, hogy van még szöveg, de nincs elég hely megjeleníteni az egészet. A módszer jó, ha a szöveged túl hosszú lehet, de egyáltalán nem akarod egynél több sorban mutatni. A CharacterEllipsis alternatívájaként használhatod a WordEllipsis-t, ami az utolsó megjeleníthető szó után nyírja meg a szöveget az utolsó karakter helyett, így elkerüli a csak részben megjelenített szavakat.
A kék TextBlock aTextWrapping tulajdonság Wrap értékét használja arra, hogy a TextBlock új sort kezdjen, ha a következő szó már nem fér ki az előző sorba. Az első TextBlock-kal ellentétben, ahol manuálisan adtuk meg, hogy hol törjön a szöveg, itt ez teljesen automatikusan és jobban történik: Automatikusan átállítja magát annak függvényében, hogy a TextBlock-nak több, vagy kevesebb helye lesz. Próbáld a példában mutatott ablakot össze-, vagy széthúzni, hogy te is lásd, hogyan frissül a sortörés az adott helyzetben.
Áttekintettük hogyan kezelhető egy egyszerű string a TextBlock-ban. A következő fejezetben a TextBlock néhány haladóbb funkciójával ismerkedünk meg, amelyek lehetővé teszik a szöveg más stílusban való megjelenítését TextBlock belsejében, és még sok egyebet is.