Есть ли способ сделать окно WPF прозрачным без потери неклиентской области (границы, строка заголовка, кнопки закрытия / минимизации / развертывания)?
Для установки «AllowsTransparency» на «true» необходимо, чтобы для WindowStyle было установлено значение «None» (как описано в this answer), который удаляет неклиентскую область.
Один из разработчиков WPF написал в блоге о том, как прозрачные окна работают в WPF, и почему было бы сложно реализовать поддержку прозрачности неклиентской области.
Независимо от того, что предлагают стили ваших окон, прозрачные окна WPF не имеют видимой неклиентской области. Это нормально для многих сценариев, в которых целью является создание настраиваемой формы окна, но это может раздражать людей, которые просто хотят «исчезнуть» в обычном окне.
Таким образом, решение, предназначенное только для WPF, не может быть и речи.
Вызов собственной функции SetLayeredWindowAttributes и передача дескриптор окна WPF и LWA_ALPHA, как и ожидалось, не действует.
Единственный другой подход, о котором я могу думать, - это размещение содержимого WPF в окне Win32 (или, возможно, WinForms). Однако я подозреваю, что попытка сделать это приведет к проблемам с воздушным пространством.
Многослойные окна WPF имеют разные возможности в разных операционных системах ... WPF не поддерживает цветовые ключи прозрачности, потому что WPF не может гарантировать отображение точного цвета, который вы запрашивали, особенно при аппаратном ускорении рендеринга.
Я не уверен, правильно ли я читаю приведенное выше, но похоже, что попытка разместить контент WPF с прозрачностью невозможна.
Любые идеи?