TOC

This article has been localized into Slovak by the community.

Základné ovládacie prvky:

Ovládací prvok Label

Ovládací prvok Label vo svojej najjednoduchšej podobe bude vyzerať veľmi podobne ako TextBlock, ktorý sme použili v inom článku. Rýchlo si všimnete, že namiesto vlastnosti Text, Label má vlastnosť Content. Dôvodom je to, že Label môže hostiť akýkoľvek druh kontrolky priamo vo vnútri, namiesto textu. Obsah môže byť reťazec, ako uvidíte v tomto prvom, veľmi základnom príklade:

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

Ďalšou vecou, ktorú si možno všimnete, je skutočnosť, že Label má v predvolenom nastavení padding (odstup textu od okraja), čo umožňuje, aby bol text vykreslený o pár pixelov od horného, ľavého rohu. Pri TextBlocku to musíte špecifikovať manuálne.

V takom jednoduchom prípade, kde je obsah jednoduchý reťazec, Label vlastne vytvorí TextBlock a zobrazí reťazec.

Ovládací prvok Label vs. ovládací prvok TextBlock

Tak prečo potom vôbec používať Label? Existuje niekoľko dôležitých rozdielov medzi kontrolkami Label a TextBlock. TextBlock umožňuje iba renderovanie textového reťazca, zatiaľ čo Label umožňuje aj:

  • Špecifikovať okraj
  • Renderovať iné ovládacie prvky, napr. obrázok
  • Použiť obsah šablóny prostredníctvom vlastnosti ContentTemplate
  • Použiť prístupové klávesy na focus na súvisiace ovládacie prvky

Posledný bod odrážky je vlastne jeden z hlavných dôvodov používania prvku Label, než prvku TextBlock. Ale keď chcete len zobraziť text, mali by ste použiť ovládací prvok TextBlock, pretože je ľahší a vo väčšine prípadov funguje lepšie ako Label.

Label a prístupové klávesy (mnemotechniky)

V operačnom systéme Windows aj v iných operačných systémoch je bežnou praxou, prístup k ovládacím prvkom v dialógovom okne podržaním klávesy [Alt] a stlačením znaku, ktorý zodpovedá ovládaciemu prvku, ku ktorému chcete pristupovať. Znak, ktorý chcete stlačiť, sa zvýrazní, keď podržíte klávesu [Alt]. TextBlock túto funkciu nepodporuje, ale Label áno, takže pre označenie ovládacích prvkov je Label zvyčajne vynikajúcou voľbou. Poďme sa pozrieť na jeho príklad v akcii:

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

Na obrázku je zobrazené vzorové dialógové okno po stlačení klávesy Alt. Skúste to spustiť, podržte stlačené tlačidlo [Alt] a potom stlačte N a M. Uvidíte, ako sa fokus pohybuje medzi dvoma textovými políčkami.

Takže tu je niekoľko nových konceptov. Najprv definujeme prístupovú klávesu umiestnením znaku podčiarknutia (_) pred znakom. Nemusí to byť prvý znak, môže to byť pred akýmkoľvek znakom v obsahu prvku Label. Bežnou praxou je použiť prvý znak, ktorý ešte nie je použitý ako prístupová klávesa pre inú kontrolku.

Na spojenie prvku Label a určeného ovládacieho prvku používame vlastnosť Target. Na tento účel používame štandardnú väzbu WPF (binding), pričom použijeme vlastnosť ElementName, ktorú budeme popisovať neskôr. Väzba (binding) je založená na názve ovládacieho prvku, takže ak zmeníte tento názov, nezabudnite zmeniť väzbu.

Používanie ovládacích prvkov ako obsah Labelu

Ako už bolo spomenuté, ovládací prvok Label umožňuje hosťovať iné ovládacie prvky, pričom si stále zachováva ďalšie výhody. Skúsme si príklad, v ktorom vložíme do prvku Label obrázok a aj text, a zároveň máme prístupové tlačidlo pre každý Label:

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

Toto je len rozšírená verzia predchádzajúceho príkladu - namiesto jednoduchého textového reťazca bude náš Label teraz obsahovať aj obrázok a text (AccessText nám umožňuje používať prístupový kľúč pre Label). Obidva ovládacie prvky sú umiestnené vo vodorovnom prvku StackPanel, pretože Label, rovnako ako každý iný derivát ContentControl, môže hostiť iba jeden podriadený prvok.

Ovládací prvok Image, ktorý bude popísaný neskôr, používa vzdialený obrázok - je to LEN na demonštračné účely a NIE je to dobrý nápad pre väčšinu reálnych aplikácií.

Zhrnutie

Vo väčšine situácií je Label presne to, čo naznačuje názov: Slúži ako textový štítok pre iný ovládací prvok. To je jeho hlavný účel. Vo väčšine prípadov by ste pravdepodobne mali používať ovládací prvok TextBlock, alebo niektorý z ostatných textových kontajnerov, ktoré ponúka WPF.


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!