Я бы предпочел использовать флаг, а не отвязывать / перепривязывать ...
Создайте переменную уровня класса, такую как ...
private bool processCheckChange = true;
Тогда в вашем обработчике событий сделайте ...
OnCheckedChange()
{
if(processCheckChange)
{
//Handle check change
}
}
Тогда, когда вы хотите снять все пункты ...
UncheckAllItems()
{
processCheckChange = false;
//Uncheck all items
processCheckChange = true;
}
Я думаю, что это должно сделать работу