Хтось знайшов корисне рішення проблеми DesignMode при розробці елементів керування?
Проблема в тому, що якщо ви вкладаєте елементи керування, то DesignMode працює лише для першого рівня. Другий і нижчий рівні DesignMode завжди повертають FALSE.
Стандартний злом полягав у тому, щоб дивитись на назву запущеного процесу, і якщо це "DevEnv.EXE", то це має бути студія, отже DesignMode справді TRUE.
Проблема з пошуком ProcessName працює навколо реєстру та інших дивних частин, і кінцевий результат полягає в тому, що користувач може не мати необхідних прав на перегляд імені процесу. До того ж цей дивний маршрут дуже повільний. Отже, нам довелося накопичувати додаткові хаки, щоб використовувати синглтон, і якщо під час запиту на ім'я процесу виникає помилка, то припустимо, що DesignMode - FALSE.
Хороший чистий спосіб визначити DesignMode в порядку. Готово змусити Microsoft виправити це внутрішньо у фреймворку було б ще краще!