Обычно для такого рода проблем я объявляю флаг bool, которому присваивается значение до и после строки кода, в которой происходит событие, и когда это событие запускается, первое, что он делает, - проверяет значение этого флага.
Например,
bool flag = false;
private void SomeMethod()
{
flag = true;
YourCheckBox.checked = false;
flag = false;
}
void YourCheckBox_Checked(object sender, RoutedEventArgs e)
{
if (flag)
return;
// Do something....
}
void YourCheckBox_UnChecked(object sender, RoutedEventArgs e)
{
if (flag)
return;
// Do something....
}
Когда я назначил флаг = true, следующая строка будет вызывать событие изменения выбора. когда я это сделаю, будет возвращен флаг coz установлен в true;