Скрыть значок из окна WPF
Я знаю, что есть много вопросов о том, как скрыть или убрать значок в верхнем левом углу окна WPF, где находится системное меню. Я пробовал многие из них, но ни один не работает. Вот мои требования:
Значок исчезает и не занимает пустого места (т. Е. Нет прозрачного значка)Заголовок окна начинается прямо у левого края окнаКнопка закрытия в правом верхнем углу все еще там и работаетКнопки свертывания / разворачивания все еще присутствуют, если они включены (необязательно, не проверяли это)Нет пользовательского рисунка всей оконной рамыРаботает на Windows 7 с включенным Aero Glass (Windows 8 кто-нибудь?)Работает на 32 и 64-битных Windows (x86 и x64 build)Работает с WPF .NET 4.0Работает, когда не в отладчике, как Visual Studio (было бы неплохо, если бы он также работал в отладчике)Должно также работать на Windows XP (опционально)Доступные ответы в основном используют функции Windows APIGetWindowLong
, SetWindowLong
а иногда иSetWindowPos
добавить расширенный стиль окнаWS_EX_DLGMODALFRAME
и позвонитьSWP_FRAMECHANGED
, Иногда другие стили также устанавливаются или не устанавливаются.
К сожалению, ничего из этого не работает вообще. У меня может не быть иконки без кнопки закрытия, или они все еще есть. Но также заметно, что весь этот контент относится к 2010 году или ранее. Кажется, он нацелен на более ранние версии .NET или Windows и с тех пор не работает.
Я уже сравнил стили окон системных диалогов (из Проводника) и моих окон WPF с Microsoft Spy ++ (включен в Visual Studio). Но я могу попытаться установить все флаги одинаково, значок не исчезнет. Это как черная магия, которая отменяет любую другую функцию API или физику.
У кого-нибудь есть решение, которое все еще работает сегодня и в указанной среде?