TOC

This article has been localized into Slovak by the community.

Panely:

Ovládací prvok DockPanel

DockPanel uľahčuje ukotviť obsahu vo všetkých štyroch smeroch (hore, dole, doľava a doprava). To je skvelá voľba v mnohých situáciách, keď chcete rozdeliť okno do konkrétnych oblastí a to najmä preto, že posledný prvok vo vnútri DockPanelu, ak táto funkcia nie je špecificky zakázaná, automaticky vyplní zvyšok priestoru (center).

Ako to bolo aj u iných panelov vo WPF, využívanie výhod panelu začnete pomocou jeho pripojenej vlastnosti, v tomto prípade vlastnosť DockPanel.Dock, ktorá rozhoduje, ktorým smerom chcete, aby boli podriadené prvky ukotvené. Ak to nepoužijete, prvé ovládacie prvky budú ukotvené doľava, pričom posledný obsadí zvyšný priestor. Tu je príklad používania:

<Window x:Class="WpfTutorialSamples.Panels.DockPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DockPanel" Height="250" Width="250">
	<DockPanel>
		<Button DockPanel.Dock="Left">Left</Button>
		<Button DockPanel.Dock="Top">Top</Button>
		<Button DockPanel.Dock="Right">Right</Button>
		<Button DockPanel.Dock="Bottom">Bottom</Button>
		<Button>Center</Button>
	</DockPanel>
</Window>

Ako už bolo spomenuté, pre posledný prvok nepriraďujeme kotvenie, pretože sa automaticky centruje, čo mu umožňuje vyplniť zostávajúci priestor. Tiež si všimnete, že ovládacie prvky okolo stredu zaberajú len priestor, ktorý potrebujú - všetko ostatné zostane v stredovej polohe. To je dôvod, prečo uvidíte, že tlačidlo vpravo zaberie o niečo viac miesta, ako tlačidlo vľavo - extra znak v texte jednoducho vyžaduje viac pixelov.

Posledná vec, ktorú si pravdepodobne všimnete, je rozdelenie priestoru. Napríklad tlačidlo Top nezaberá všetok horný priestor, lebo časť z neho zaberá tlačidlo Left. DockPanel rozhoduje o tom, ktorý ovládací prvok má prednosť. V tomto prípade má tlačidlo Left prednosť, pretože je umiestnené ako prvé. Našťastie to tiež znamená, že je to veľmi jednoduché zmeniť, ako uvidíme v ďalšom príklade, kde sme trochu usporiadali priestor tým, že sme priradili šírky/výšky do ovládacích prvkov:

<Window x:Class="WpfTutorialSamples.Panels.DockPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DockPanel" Height="250" Width="250">
	<DockPanel>
		<Button DockPanel.Dock="Top" Height="50">Top</Button>
		<Button DockPanel.Dock="Bottom" Height="50">Bottom</Button>
		<Button DockPanel.Dock="Left" Width="50">Left</Button>
		<Button DockPanel.Dock="Right" Width="50">Right</Button>	
		<Button>Center</Button>
	</DockPanel>
</Window>

Horné a spodné ovládacie prvky majú prednosť pred ľavými a pravými ovládacími prvkami a všetky majú výšku alebo šírku 50 pixlov. Ak zväčšíte, alebo zmenšíte okno, tak uvidíte, že táto statická šírka/výška zostáva rovnaká. Pri zmenách veľkosti okna sa zväčšuje, alebo zmenšuje iba stredová oblasť.

LastChildFill (vyplniť posledný prvok)

Ako sme už uviedli, predvolené správanie je, že posledný prvok DockPanelu zaberie zvyšok priestoru, ale toto môže byť deaktivované pomocou funkcie LastChildFill. Tu je príklad, kedy ju deaktivujeme a súčasne ukážeme schopnosť ukotviť viac ako jednu kontrolku na rovnakú stranu:

<Window x:Class="WpfTutorialSamples.Panels.DockPanel"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DockPanel" Height="300" Width="300">
	<DockPanel LastChildFill="False">
		<Button DockPanel.Dock="Top" Height="50">Top</Button>
		<Button DockPanel.Dock="Bottom" Height="50">Bottom</Button>
		<Button DockPanel.Dock="Left" Width="50">Left</Button>
		<Button DockPanel.Dock="Left" Width="50">Left</Button>
		<Button DockPanel.Dock="Right" Width="50">Right</Button>
		<Button DockPanel.Dock="Right" Width="50">Right</Button>
	</DockPanel>
</Window>

V tomto príklade ukotvíme dva ovládacie prvky doľava a dva ovládacie prvky doprava a súčasne vypneme vlastnosť LastChildFill. To nám v strede ponecháva prázdny priestor, ktorý môže byť v niektorých prípadoch vhodnejší.


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!