TOC

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

Основні елементи керування:

The RadioButton control

Інструмент RadioButton дозволяє Вам надавати перелік можливих опцій для Вашого користувача, з обранням одночасно тільки однієї з-поміж усіх. Можна досягнути такого ж ефекту, використовуючи менший обсяг, за допомогою інструмента ComboBox, але множина з RadioButton-ів, як правило, надає користувачу кращий огляд функцій, закріплених за цими button-ами.

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

Все, що ми зробили, це додали Label із запитанням, а потім три компоненти RadioButton, кожен з можливою відповіддю. Ми визначили вибір за замовчуванням, використавши властивість IsChecked в останньому RadioButton-і, який користувач може змінити простим натисканням на один із решти RadioButton-ів. Це також є властивістю, яку Ви б хотіли використати з "Code-behind" (код у платформі .NET[?]) для того, щоб перевірити чи обрано відповідний RadioButton, чи ні.

Групи RadioButton

Якщо Ви спробуєте запустити вищенаведений приклад, то побачите, що, як і гарантувалося, тільки один RadioButton може бути обраний в один і той самий час. Проте, якщо Вам потрібно декілька груп RadioButton-ів, кожна зі своїм власним, індивідуальним вибором? Ось де в нагоді з'являється властивість GroupName, яка дозволяє Вам вказати які з RadioButton-ів співпрацюють разом. Приклад:

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

Завдяки встановленню властивості GroupName у кожному з RadioButton-ів, вибір тепер можна робити для кожної з груп. Без цього, можливим був би лише один вибір для всіх шести RadioButton-ів.

Спеціальний вміст

RadioButton наслідується від класу ContentControl, що означає, що цей інструмент може містити спеціальний вміст та, разом з тим, відображати його. Якщо Ви просто визначите текст, як у прикладі вище, WPF помістить його всередині контролера TextBlock та відобразить цей текст, але це просто ярлик, якщо простіше. Ви можете використати будь-який тип контролера всередині RadioButton-а, так як це показано в наступному прикладі:

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

Отож[?], цей приклад стає трохи важким, але концепція досить проста. Для кожного RadioButton-а маємо WrapPanel із зображенням та текстом у ній. Як тільки ми взяли контроль над текстом, використавши контролер TextBlock, то стало можливим для нас форматувати текст будь-яким чином, як заманеться. У цьому прикладі я замінив колір тексту у відповідності до вибору. Контролер Image (більше про це читайте пізніше) використовується для відображення картинки для кожного вибору.

Зверніть увагу, як Ви можете натиснути будь-де у RadioButton-і, навіть на картинку чи текст, щоб увімкнути його, тому що ці дані визначені як вміст даного RadioButton-а. Якщо б Ви помістили це (тобто, WrapґPanel) як окрему панель, поруч із RadioButton-ом, користувачу довелося б натискати безпосередньо на круглу точку RadioButton-а, щоб увімкнути його, що є менш застосовним.


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!