TOC

This article has been localized into Hungarian by the community.

Alap vezérlők:

A Label vezérlő

A Label vezérlő legegyszerűbb formájában a TextBlock-hoz nagyon hasonlóan néz ki, amit más cikkben már használtunk. Bár gyorsan fel fog tűnni, hogy Text tulajdonsága helyett a Label a Content tulajdonságot használja. Ennek az az oka, hogy a Label bármelyik másik vezérlőt is magában tárolhatja, nem csak szöveget. De a tartalom lehet string is, ahogy azt az első, nagyon egyszerű példában láthatod:

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

Még egy dolog, ami feltűnhet az az, hogy a Label-ben alapértelmezetten van egy kis eltartás, ami egy pár pixellel eltolja a szöveget a bal felső saroktól. A TextBlock vezérlő esetén nem ez a helyzet, ott neked kell ezt beállítani manuálisan.

Ilyen egyszerű esetben, ahol a tartalom egy mezei string, a Label igazából létrehoz magában egy TextBlock-ot és abban jeleníti meg a szöveget.

Label vezérlő vs. TextBlock vezérlő

Akkor miért használjunk Label-t egyáltalán? Nos, van egy pár fontos különbség a Label és a TextBlock között. A TextBlock csak szöveg renderelését engedélyezi, míg a Label lehetőséget nyújt:

  • Szegély megadására
  • Másik vezérlők renderelésére, pl. egy képre
  • Sablon tartalmak használatára a ContentTemplate tulajdonsággal
  • Hozzáférési kulcs használatára, hogy ráfókuszáljon a kapcsolódó vezérlőkre

Az utolsó pont tulajdonképpen az egyik fő oka a Label használatának a TextBlock helyett. Amikor egyszerű szöveget akarsz mutatni, a TextBlock vezérlőt kellene használnod, mivel ez egyszerűbb, és jobban teljesít a Label-nél a legtöbb esetben.

Label és hozzáférési kulcsok (emlékeztető)

Windowsban és más operációs rendszerekben is egy gyakori eljárás, hogy hozzáférhetsz egy vezérlőhöz az [Alt] billentyű nyomva tartásával, majd annak a karakternek a lenyomásával, ami a használni kívánt vezérlőnek felel meg. A megnyomandó karakter ki lesz jelölve, miután lenyomod az [Alt] gombot. TextBlock vezérlők nem támogatják ezt a funkciót, de a Label igen, úgyhogy a címkék vezérléséért a Label általában egy remek választás. Nézzük meg egy példában, hogyan is működik:

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

A képernyőkép úgy mutatja az ablakot, hogy az Alt már le van nyomva. Próbáld meg futtatni, nyomd le az [Alt] billentyűt, majd az N vagy M gombot. Látni fogod, hogy változik a fókusz a két TextBox között.

Szóval van itt egy pár újdonság. Először is, a hozzáférési kulcsot a karakter előtti aláhúzással (_) definiálhatjuk. Nem kell a legelső karakternek lennie, bármelyik karakter előtt lehet a Label tartalmában. A bevett szokás az az, hogy azt a legelső karaktert használjuk, amit még egyik másik vezérlő sem alkalmaz hozzáférési kulcsként.

A Target tulajdonságot használjuk, hogy összekapcsoljuk a Label-t a kívánt vezérlővel. Ehhez egy alap WPF Binding-ot használunk, a ElementName tulajdonság beírásával, de ezt majd később részletezzük. A Binding a vezérlő nevét használja fel, amit ha megváltoztatsz, a binding-ban ugyanúgy át kell írnod.

Vezérlők használata Label Content-ként

Ahogy már említettük, a Label vezérlő megengedi más vezérlők beágyazását, miközben minden előnyét megtartja. Lássunk egy példát, ahol van egy kép és szöveg is a Label-ben, miközben mindegyik szöveg el van látva hozzáférési kulccsal:

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

Ez csak egy bővített változata az előző példának - egy egyszerű szöveg helyett a Label most magában foglal egy képet is egy rövid szöveg mellett (ami egy AccessText vezérlőben van, hogy így is felhasználhassunk hozzáférési kulcsot). A vezérlők egy vízszintes StackPanel-ben vannak, mivel a Label, mint bármely másik ContentControl leszármazó, csak egy alvezérlőt tartalmazhat.

Az Image vezérlő, amit később kivesézünk, külső képet használ - ez CSAK bemutatási célokra szolgál, és nem jó ötlet a legtöbb valós alkalmazás esetében.

Összegzés

A legtöbb esetben a Label vezérlő azt csinálja, amit a neve is sugall: szöveges címkeként viselkedik. Ez a legfőbb célja. Bár így is inkább TextBlock vezérlőt ajánlott használnod, vagy egy másik, WPF-ben alkalmazható szöveg-tárolót.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!