Другой идеей может быть: сделать каждый элемент управления, которому необходимо управление состоянием, реализовать AsbtractControl класс, который подразумевает для каждого дочернего элемента определение его конкретного состояния уведомления .
Реализация EventManager в вашем приложении, которое «перехватывает» событие, полученное от различных элементов управления, вызывает их как AsbtractControl и нажимает на StateStack состояние, подразумеваемое элементом управления, просто «активированным»пользователем.
Реализация DesitionalEngine , которая выполняет синтаксический анализ при каждом действии StateStack и включает / отключает элементы управления в пользовательском интерфейсе, а также очищает / не обрабатывает стек на основе выполненного задания.Потому что, как вы сказали, определение Enable / Disable может быть выполнено также на основе нескольких действий управления.
Просто для того, чтобы дать вам еще одну идею, вызвать нечто похожее на то, что я реализовал много лет назад для WinForms.
Надеюсь, это поможет.
С уважением.