Общая схема работы должна быть примерно такая
1. Создается свой собственный метод формы в котором на основе
текущего значения поля таблицы (которое отображается в CheckBox) кнопка делается либо видимой, либо нет
X++:
myButton.visible(MyTable.MyField == NoYes::Yes ? true : false);
Обратите внимание, что менять значение надо
всегда. Вне зависимости от значения CheckBox.
В качестве условия, разумеется, можно проверять значение CheckBox (объекта формы), а не поле таблицы-источника. Это уже зависит от постановки задачи
2. В методе DataSource MyTable.active() делаете вызов этого своего метода после super()
3. В методе CheckBox.modified() после super() делаете вызов своего метода. Без вызова active() DataSource.
Идея заключается в том, что метод active() на DataSource, кроме собственно выполнения Вашего метода делает еще кое-что свое

и это "свое" может вносить "помехи" в работу функционала. Поэтому выделение метода активации кнопок в отдельный метод позволяет разделить Ваши дейтсвия и дейтсвия системы.