Кто-нибудь нашел полезное решение проблемы DesignMode при разработке элементов управления?
Проблема в том, что если вы вкладываете элементы управления, то DesignMode работает только для первого уровня. Второй и нижний уровни DesignMode всегда будут возвращать FALSE.
Стандартным хаком было посмотреть на имя запущенного процесса, и если это "DevEnv.EXE", то он должен быть студийным, поэтому DesignMode действительно TRUE.
Проблема с поиском ProcessName обходится через реестр и другие странные части, в результате чего пользователь может не иметь необходимых прав для просмотра имени процесса. Кроме того, этот странный маршрут очень медленный. Таким образом, нам пришлось накапливать дополнительные хаки, чтобы использовать одиночный код, и если при запросе имени процесса выдается ошибка, тогда предположим, что DesignMode равен FALSE.
Хороший чистый способ определения DesignMode в порядке. Если бы Microsoft исправила это внутренне для фреймворка, было бы еще лучше!