#825 – Two Way Binding for a CheckBox
May 22, 2013 1 Comment
You can bind the IsChecked property of a CheckBox to a boolean variable, so that the variable will always reflect the current value of the CheckBox in the user interface.
You can also do two-way binding, where the boolean variable changes when the user toggles the CheckBox, but the CheckBox also toggles when the value of the variable changes.
<Label Content="Things my dog can do:"/>
<CheckBox Content="Sit" IsChecked="{Binding CanSit, Mode=TwoWay}"/>
<CheckBox Content="Stay" IsChecked="{Binding CanStay, Mode=TwoWay}"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button Content="Report State" Click="btnReportState_Click"
Margin="5"/>
<Button Content="Change State" Click="btnChangeState_Click"
Margin="5"/>
</StackPanel>
Code-behind:
public partial class MainWindow : Window, INotifyPropertyChanged
{
private bool canSit;
public bool CanSit
{
get { return canSit; }
set
{
canSit = value;
RaisePropertyChanged("CanSit");
}
}
private bool canStay;
public bool CanStay
{
get { return canStay; }
set
{
canStay = value;
RaisePropertyChanged("CanStay");
}
}
public MainWindow()
{
this.InitializeComponent();
this.DataContext = this;
}
private void btnReportState_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(string.Format("Sit: {0}, Stay: {1}", CanSit, CanStay));
}
private void btnChangeState_Click(object sender, RoutedEventArgs e)
{
CanSit = CanSit ? false : true;
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propName)
{
PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}





