CheckBox и RadioButton

Последнее обновление: 31.10.2015

CheckBox

Элемент CheckBox представляет собой флажок, который может принимать три состояния: Checked, Unchecked и Intermediate. Чтобы получить или установить определенное состояние, надо использовать свойство IsChecked:

<StackPanel>
    <CheckBox x:Name="checkBox1" IsChecked="False" IsThreeState="True" Content="Неотмечено" />
    <CheckBox x:Name="checkBox2" IsChecked="True" Content="Отмечено" />
    <CheckBox x:Name="checkBox3" IsChecked="{x:Null}" IsThreeState="True" Content="Неопределено"/>
</StackPanel>

Значение свойства IsChecked="{x:Null}" устанавливает неопределенное состояние для элемента checkbox. Остальные два состояния задаются с помощью True и False. Хотя визуальной разницы между неотмеченным и неопределенным состоянием вы не увидите:

CheckBox in Windows Phone 8.1

Также обратите внимание на свойство IsThreeState. По умолчанию оно равно False, что значит, что элемент может переключаться в два состояния - отмеченное и неотмеченное. При установке IsThreeState="True" элемент может переключаться в третье неопределенное состояние.

В коде c# мы можем проинспектировать состояние флажка, например, получая его в обработчике кнопки:

<StackPanel>
    <CheckBox x:Name="checkBox1" IsChecked="False" IsThreeState="True" Content="Enabled" />
    <TextBlock x:Name="textBlock1" FontSize="26" Height="30" />
    <Button x:Name="button1" Content="Выбрать" Click="button1_Click" />
</StackPanel>
private void button1_Click(object sender, RoutedEventArgs e)
{
    switch(checkBox1.IsChecked)
    {
        case true:
            textBlock1.Text = "Отмечен";
            break;
        case false:
            textBlock1.Text = "Не отмечен";
            break;
        case null:
            textBlock1.Text = "Неопределен";
            break;
    }
}

Также мы можем определить изменение состояние отдельного флажка с помощью обработки его события Checked:

<CheckBox x:Name="checkBox1" Checked="checkBox_Checked" Content="Enabled" />

И в коде обработчика, например, изменим цвет кнопки:

private void checkBox_Checked(object sender, RoutedEventArgs e)
{
    if(button1!=null)
    {
        SolidColorBrush brush= new SolidColorBrush();
        brush.Color = Colors.Red;
        button1.Background = brush;
    }
}

RadioButton

RadioButton представляет переключатель или радиокнопку. Элемент RadioButton, как и CheckBox, может быть в отмеченном, неотмеченном и неопределенном состоянии. И в один момент времени мы можем выбрать из группы элементов RadioButton только один переключатель. Например,

<StackPanel>
    <RadioButton Content="Windows Phone 8.1" IsChecked="True" />
    <RadioButton Content="Android Lollipop 5.0" />
    <RadioButton Content="iOS 8.2" />
</StackPanel>

Все переключатели образуют одну группу, где можно выбрать только один элемент. Но, используя свойство мы можем задать несколько групп:

<StackPanel>
    <RadioButton GroupName="MobileOS" Content="Windows Phone 8.1" IsChecked="True" />
    <RadioButton GroupName="MobileOS" Content="Android Lollipop 5.0" />
    <RadioButton GroupName="MobileOS" Content="iOS 8.2" />
    <RadioButton GroupName="Languages" Content="C#" IsChecked="True" />
    <RadioButton GroupName="Languages" Content="VB.NET" />
    <RadioButton GroupName="Languages" Content="C++" />
</StackPanel>

Чтобы проследить за выбором того или иного элемента, мы также можем определить у элементов событие Checked и его обрабатывать в коде:

<StackPanel>
    <RadioButton Checked="RadioButton_Checked" Content="Windows Phone 8.1" />
    <RadioButton Checked="RadioButton_Checked" Content="Android Lollipop 5.0" />
    <TextBlock x:Name="textBlock1" FontSize="26" />
</StackPanel>

И в обработчике, например, изменяем текст текстового блока:

private void RadioButton_Checked(object sender, RoutedEventArgs e)
{
    RadioButton pressed = (RadioButton)sender;
    if (textBlock1 != null)
        textBlock1.Text = pressed.Content.ToString();
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850