Создание пользовательских форм в WPF?

В настоящее время я изучаю WPF. Я до сих пор наслаждаюсь этим. Мне нравится, как легко создавать отличные приложения, и хотел бы создать приложение с пользовательской границей окна. Я хотел бы, чтобы он выглядел примерно так:

Я знаю, что просто могу просто изменить тип окна, чтобы не иметь границы и идти оттуда, но это похоже на WinForms. Разве не лучше было бы создать класс, полученный из Window, и его стиль? Если да, то как я могу это сделать? Спасибо!

3 ответа

Вот отличная статья о настройке окна "хром" с WPF:

Пользовательское окно Chrome в WPF

Он сопровождается проектом Code Gallery, из которого вы можете загрузить код:

WPF Chrome


Чтобы показать нестандартные границы, вы должны установить AllowsTransparency = True и Border из окна. Если вы хотите сделать это в классе, зависит от вас. Вы в основном должны понимать, что WPF - это просто приложение DirectX, размещенное в стандартном окне. Таким образом, если вы хотите нестандартное поведение Windows, вам нужно отказаться от стандартной границы окна и начать повторное подключение к ней на основе стандартных событий окна, которые вы хотите обработать. Перетаскивание, минимизация/максимизация/восстановление, панель заголовка.

Действительно, вам не нужно тратить более 30 минут на час, чтобы придумать что-то близкое к тому, что вы хотите, и вы могли бы поместить свое пользовательское окно в базовый класс для повторного использования в будущем.

У меня есть ощущение, что для большинства случаев это будет лучшим и быстрым вариантом, чем попытка переопределить рисунок Windows по умолчанию.


Существует продукт под названием "Blendables", который содержит элемент управления ChromelessWindow в своем "Essentials Mix" , который делает это очень легко сделать, Я никогда не использовал его сам, я просто знаю, что он существует и думал, что это может быть полезно. На минимальном уровне он показывает, что вы можете делать то, что вы просите о создании многоразового, templatable chrome.

licensed under cc by-sa 3.0 with attribution.