Я не думаю, что из-за ненужной перерисовки во время выполнения может быть какой-либо ощутимый ущерб. Таким образом, с этой точки зрения нет необходимости менять код. В этой ситуации вы должны решить, принимая во внимание дизайн / архитектуру. Вы говорите:
... и это не имеет никакого смысла для дизайна ...
, но это так!
Если вы хотите избежать перерисовки, вы должны добавить источник (панель) к параметрам метода (ов), которые изменяют модель, вставить его в событие изменения и учитывать этот параметр при повторной оценке события , что делает ваш код намного сложнее. Подумайте, что еще нужно сделать, если есть два экземпляра одной и той же панели, одна, которая изменяет модель, другая, которая должна быть изменена после получения события ... добавление идентификаторов объектов в вызовы методов ... Что если позже изменение дизайна модели или просмотр того, как редактирование одного поля панели приводит к изменениям модели, отображаемым в другой части панели, - дополнительные изменения снова ... и т. д.
Более того, если вы сделаете, как описано, вы порвете с разделением модели и вида, что никогда не было хорошей идеей.
Если вы хотите, чтобы все было просто, оставьте все как есть. Единственная причина написания сложного кода - плохие результаты во время выполнения, и я не думаю, что вы получите это.