TOC

This article is currently in the process of being translated into Romanian (~95% done).

Controale de baza:

The RadioButton control

Controlul RadioButton permite afișarea mai multor opțiuni disponibile utilizatorului, doar una putând fii selectată în același timp. Poți ajunge la același efect, folosind mai puțin spațiu, cu controlul ComboBox, dar un set de controale RadioButton îi dau utilizatorului o viziune de ansamblu mai bună decât opțiunile pe care le au într-un control ComboBox.

<Window x:Class="WpfTutorialSamples.Basic_controls.RadioButtonSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="RadioButtonSample" Height="150" Width="250">
	<StackPanel Margin="10">
		<Label FontWeight="Bold">Are you ready?</Label>
		<RadioButton>Yes</RadioButton>
		<RadioButton>No</RadioButton>
		<RadioButton IsChecked="True">Maybe</RadioButton>
	</StackPanel>
</Window>

Tot ce trebuie făcut este sa aducem un control Label cu o întrebare urmând trei controale RadioButton, fiecare cu un răspuns posibil. Definim o opțiune implicită, folosind proprietatea IsChecked pentru ultimul control RadioButton, pe care utilizatorul poate sa-l schimbe ușor, selectând oricare alt control RadioButton. Asta este de asemenea și proprietatea pe care vei vrea sa o folosești în cod ca să verifici dacă un control RadioButton este selectat sau nu.

Grupuri de controale RadioButton

Dacă încerci sa rulezi exemplul de mai sus, vei vedea că, după cum am promis, numai un control RadioButton poate fii selectat în același timp. Ce faci dacă vrei sa folosești mai multe grupuri de controale RadioButton, fiecare cu secțiunea individuală proprie? Pentru asta, trebuie sa folosești proprietatea NumeGrup, care te lasă sa specifici care controale RadioButton sunt grupate împreuna. Uite un exemplu:

<Window x:Class="WpfTutorialSamples.Basic_controls.RadioButtonSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="RadioButtonSample" Height="230" Width="250">
	<StackPanel Margin="10">
		<Label FontWeight="Bold">Are you ready?</Label>
		<RadioButton GroupName="ready">Yes</RadioButton>
		<RadioButton GroupName="ready">No</RadioButton>
		<RadioButton GroupName="ready" IsChecked="True">Maybe</RadioButton>

		<Label FontWeight="Bold">Male or female?</Label>
		<RadioButton GroupName="sex">Male</RadioButton>
		<RadioButton GroupName="sex">Female</RadioButton>
		<RadioButton GroupName="sex" IsChecked="True">Not sure</RadioButton>
	</StackPanel>
</Window>

Dacă proprietatea GroupName este setată la fiecare control RadioButtom, o selecție poate acum fii făcută pe fiecare dintre cele doua grupuri. Fără asta, numai o singura secțiune pentru toate controalele RadioButton poate fii posibilă.

Conținut personalizat

Clasa RadioButton este moștenită din clasa ContentControl, ceea ce înseamna că accepta conținut personalizat care e afișat lângă control. Dacă specifici o bucata de text, ca în exemplul de mai sus, WPF îl va pune într-un control TextBlock și îl va afișa, dar asta este doar o scurtătura ca să simplifice totul pentru tine. Poți folosi orice tip de control înauntru, asa cum vom vedea în următorul exemplu:

<Window x:Class="WpfTutorialSamples.Basic_controls.RadioButtonCustomContentSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="RadioButtonCustomContentSample" Height="150" Width="250">
	<StackPanel Margin="10">
		<Label FontWeight="Bold">Are you ready?</Label>
		<RadioButton>
			<WrapPanel>
				<Image Source="/WpfTutorialSamples;component/Images/accept.png" Width="16" Height="16" Margin="0,0,5,0" />
				<TextBlock Text="Yes" Foreground="Green" />
			</WrapPanel>
		</RadioButton>
		<RadioButton Margin="0,5">
			<WrapPanel>
				<Image Source="/WpfTutorialSamples;component/Images/cancel.png" Width="16" Height="16" Margin="0,0,5,0" />
				<TextBlock Text="No" Foreground="Red" />
			</WrapPanel>
		</RadioButton>
		<RadioButton IsChecked="True">
			<WrapPanel>
				<Image Source="/WpfTutorialSamples;component/Images/question.png" Width="16" Height="16" Margin="0,0,5,0" />
				<TextBlock Text="Maybe" Foreground="Gray" />
			</WrapPanel>
		</RadioButton>
	</StackPanel>
</Window>

Din punct de vedere al marcajului, exemplul acesta devine cam greoi, dar conceptul este destul de simplu. Pentru fiecare control RadioButton avem un control WrapPanel, conținând o imagine și o bucata de text. Deoarece nu vom controla textul folosind un control TextBlock, asta ne va lăsa sa formatăm textul în orice fel vrem noi. Pentru acest exemplu am schimbat culoarea textului ca sa ne potrivim cu alegerea făcută. Un control Image (o sa citești despre astea mai încolo) este folosit pentru a afișa o imagine pentru fiecare opțiune.

Observați cum puteți face clic oriunde pe controlul RadioButton, chiar și pe imagine sau text, pentru a-l activa, deoarece le-am specificat ca și conținut al controlului RadioButton. Dacă l-ai fii plasat într-un panou separat, lângă controlul RadioButton, utilizatorul ar fii trebuit sa dea clic direct pe cercul din RadioButton ca sa-l activeze, ceea ce ar fii fost mai putin practic.


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!