CheckBox
, WPFA CheckBox
allows an option to be set, or unset
. This control by default has 2 states: Checked and Unchecked—an Indeterminate state is also possible.
We use event handlers (CheckBox_Checked
and Unchecked) to detect changes. IsChecked
tells us the current state.
We create a new WPF project and add a CheckBox
control. In the XAML section, add the "Checked" attribute and allow Visual Studio to create the CheckBox_Checked
event handler.
CheckBox_Unchecked
. Look at the C# code file for your project. It has been modified.<Window x:Class="WpfApplication6.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <CheckBox Content="CheckBox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked"/> </Grid> </Window>
The CheckBox_Checked
and CheckBox_Unchecked
methods call a third method, Handle()
, that deals with CheckBox
changes. They pass the "sender" object cast to a CheckBox
.
IsChecked
property (a nullable bool
) to determine the current state of the CheckBox
in the Handle method.using System.Windows; using System.Windows.Controls; namespace WpfApplication6 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void CheckBox_Checked(object sender, RoutedEventArgs e) { Handle(sender as CheckBox); } private void CheckBox_Unchecked(object sender, RoutedEventArgs e) { Handle(sender as CheckBox); } void Handle(CheckBox checkBox) { // Use IsChecked. bool flag = checkBox.IsChecked.Value; // Assign Window Title. this.Title = "IsChecked = " + flag.ToString(); } } }
IsThreeState
The CheckBox
optionally supports 3 states. Please add the IsThreeState
attribute to the XAML. This third state is called the "indeterminate" state.
CheckBox_Indeterminate
event handler in the same way as Checked and Unchecked.<Window x:Class="WpfApplication6.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <CheckBox Content="CheckBox" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Checked="CheckBox_Checked" Unchecked="CheckBox_Unchecked" Indeterminate="CheckBox_Indeterminate" IsThreeState="True"/> </Grid> </Window>using System.Windows; namespace WpfApplication6 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void CheckBox_Checked(object sender, RoutedEventArgs e) { this.Title = "Checked"; } private void CheckBox_Unchecked(object sender, RoutedEventArgs e) { this.Title = "Unchecked"; } private void CheckBox_Indeterminate(object sender, RoutedEventArgs e) { this.Title = "Indeterminate"; } } }
Many CheckBox
controls require only the Checked and Unchecked events. But the Indeterminate state is also available. CheckBox
presents an option to the user.