WPF: Привязка свойства IsChecked к переменной типа boolean

Раньше для элементов CheckBox я по привычке обрабатывал события Checked и Unchecked в коде программы.
Например при снятии галочки с чекбокса система вызывала событие eventsListReverseDirection_Unchecked, которое я обрабатывал в коде:

private void eventsListReverseDirection_Unchecked(object sender, RoutedEventArgs e)
{
eventsListReverseDirection = false;
}

Однако код подобной сложности лучше перенести в XAML.

Для начала нужно переменную eventsListReverseDirection сделать свойством:

public bool eventsListReverseDirection { get; set; }

Потом нужно для свойства DataContext указать источник данных — главное окно


public MainWindow()
{
  this.InitializeComponent();
  this.DataContext = this;
}

Теперь можно делать привязку в XAML:

<MenuItem x:Name="mnuEventsListReverseDirection" Header="New events at top" 
IsCheckable="True" IsChecked="{Binding eventsListReverseDirection}"/>

Стоит отметить, что все изменения отражаются от интерфейса в код, но не наоборот. Т.е. если в коде мы поменяем значение eventsListReverseDirection на значение true, то в чекбоксе галочка не проставится. Чтобы отлавливать изменения свойства eventsListReverseDirection, нужно реализовывать интерфейс INotifyPropertyChanged и вызывать событие PropertyChanged.