Элемент 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. Хотя визуальной разницы между неотмеченным и неопределенным состоянием вы не увидите:
Также обратите внимание на свойство 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, как и 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(); }