#825 – Two Way Binding for a CheckBox
May 22, 2013 2 Comments
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)); } }
Pingback: Dew Drop – May 22, 2013 (#1,552) | Alvin Ashcraft's Morning Dew
Thank you! This was exactly what I was searching for! 🙂