This article is currently in the process of being translated into Romanian (~95% done).
The WrapPanel control
Controlul WrapPanel poziționează fiecare dintre controalele conținute înauntru, unul lângă celalalt, pe orizontala (implicit) sau pe verticala, pana nu mai este loc, după care va începe o noua linie sau coloana și va continua tot asa. Utilizează-l când vrei ca o lista verticala sau orizontala sa se poziționeze automat pe următoarea linie sau coloana când nu mai este loc.
Când un control WrapPanel folosește orientarea orizontala, controalele conținute vor avea aceeași înălțime, bazat pe cel mai înalt control. Când controlul WrapPanel are orientarea verticala, controalele conținute vor avea aceeași lățime, data de cel mai lat obiect.
In primul exemplu, vor verifica cum funcționează un control WrapPanel cu orientarea (implicita) orizontala:
<Window x:Class="WpfTutorialSamples.Panels.WrapPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WrapPanel" Height="300" Width="300">
<WrapPanel>
<Button>Test button 1</Button>
<Button>Test button 2</Button>
<Button>Test button 3</Button>
<Button Height="40">Test button 4</Button>
<Button>Test button 5</Button>
<Button>Test button 6</Button>
</WrapPanel>
</Window>
Observă cum am setat o înălțime specifică la unul dintre butoanele din rândul al doilea. In captura de ecran vei vedea ca asta cauzează întregul rând de butoane sa aibă aceeași înălțime, în loca sa aibă înălțimea necesară, asa cum se vede în primul rând. De asemenea, vei observa că panelul face exact ceea ce spune și numele: își înfășoară conținutul când nu mai poate sa-l încadreze în spațiul disponibil. In cazul acesta, al patrulea buton nu a putut sa se încadreze în prima linie, și s-a mutat automat pe a doua linie.
Dacă faci fereastra, și automat spațiul disponibil, mai mică, vei vedea cum panelul se ajustează automat la spațiul cel nou:
Comportamentul controlului este la fel când setezi orientarea pe verticala. Aici avem un exemplu exact ca cel de dinainte, dar cu un WrapPanel setat vertical:
<Window x:Class="WpfTutorialSamples.Panels.WrapPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WrapPanel" Height="120" Width="300">
<WrapPanel Orientation="Vertical">
<Button>Test button 1</Button>
<Button>Test button 2</Button>
<Button>Test button 3</Button>
<Button Width="140">Test button 4</Button>
<Button>Test button 5</Button>
<Button>Test button 6</Button>
</WrapPanel>
</Window>
Vei vedea cum butoanele se vor poziționa pe verticala în loc de pe orizontala, înainte sa se redistribuie când ajung la marginea de jos a ferestrei. In cazul acesta, i-am dat o lățime mai mare la al patrulea buton, și vei vedea că restul de butoane din aceeași coloana iau automat aceeași lățime, asa cum am văzut când am setat înălțimea butonului în exemplul cu orientarea orizontala.
Fi conștient ca în timp ce un WrapPanel orizontal va potrivi înălțimea controalelor în același rând și un WrapPanel vertical va potrivi lățimea controalelor în aceeași coloana, înălțimea controalelor nu este aceeași într-un WrapPanel vertical și lățimea nu va fii aceeași într-un WrapPanel orizontal. Uită-te la exemplul acesta, care este cu un WrapPanel vertical, dar în care al patrulea buton primește o lățime SI o înălțime specificată:
<Button Width="140" Height="44">Test button 4</Button>
Va arăta așa:
Observă cum butonul 5 folosește numai lățimea - ignorând înălțimea, cu toate ca face ca al șaselea buton sa fie împins pe o coloană nouă.