WPF Check box: Check changed handling WPF Check box: Check changed handling wpf wpf

WPF Check box: Check changed handling


That you can handle the checked and unchecked events seperately doesn't mean you have to. If you don't want to follow the MVVM pattern you can simply attach the same handler to both events and you have your change signal:

<CheckBox Checked="CheckBoxChanged" Unchecked="CheckBoxChanged"/>

and in Code-behind;

private void CheckBoxChanged(object sender, RoutedEventArgs e){  MessageBox.Show("Eureka, it changed!");}

Please note that WPF strongly encourages the MVVM pattern utilizing INotifyPropertyChanged and/or DependencyProperties for a reason. This is something that works, not something I would like to encourage as good programming habit.


As a checkbox click = a checkbox change the following will also work:

<CheckBox Click="CheckBox_Click" />
private void CheckBox_Click(object sender, RoutedEventArgs e){    // ... do some stuff}

It has the additional advantage of working when IsThreeState="True" whereas just handling Checked and Unchecked does not.


Im putting this in an answer because it's too long for a comment:

If you need the VM to be aware when the CheckBox is changed, you should really bind the CheckBox to the VM, and not a static value:

public class ViewModel{    private bool _caseSensitive;    public bool CaseSensitive    {        get { return _caseSensitive; }        set        {            _caseSensitive = value;            NotifyPropertyChange(() => CaseSensitive);            Settings.Default.bSearchCaseSensitive = value;        }    }}

XAML:

<CheckBox Content="Case Sensitive" IsChecked="{Binding CaseSensitive}"/>