Граница фокуса за пределами ElementHost не отображается
Я использую ElementHost для размещения пользовательского элемента управления WPF в приложении WinForms. Элемент управления имеет толстую рамку, которая должна быть видна, когда элемент управления имеет фокус. Граница находится "вне" контроля, т. Е. Имеет отрицательную границу.
Проблема в том, что граница фокуса никогда не появляется. Если я добавлю границу с отступом, содержащим мой элемент управления, в ElementHost, она станет видимой. Тем не менее, я хотел бы иметь элемент управления внутри ElementHost, как он есть, чтобы он не нарушал макет, который был сделан до использования заглушки. Любая идея?
Благодарю.
1 ответ
ElementHost имеет свой собственный дескриптор окна, в котором размещены все элементы WPF. Это отдельный элемент управления WinForms.
Вообще говоря, дескриптор окна не может рисовать за пределами своего ограничивающего прямоугольника (который, в данном случае, будет ограничивающим прямоугольником ElementHost, относительно его родительского элемента управления WinForms).
Поэтому нет, вы не можете использовать отрицательное поле для вашего элемента WPF, чтобы рисовать за пределами ElementHost. Вместо этого вам нужно будет либо нарисовать границу в WinForms, либо изменить макет так, чтобы ElementHost был больше.