WPF Проблемы переопределения шаблона окна

1,00
р.
Кастомный стиль окна:


<!-- TitleBar -->
<!-- Window content -->
В конечном итоге надлежит добиться решения следующих задач:
Наличие тени у NoResize окон: Для окон, размер которых изменять запрещено, решением проблемы отсутствия тени является установка свойства WindowChrome.GlassFrameThickness в -1. Однако, это порождает необъяснимую проблему заметного ухудшения качества шрифта во всём окне (вариант стиля именно такого окна я представил). Внешний resize border для CanResize окон: При использовании свойства WindowChrome.ResizeBorderThickness resize border занимает положения края окна. Требуется вынести его "за окно" (на тень).

Хотел бы добавить новой информации по поводу ухудшения качества шрифта.
В случае установки WindowChrome.GlassFrameThickness в -1 действительно, на экранах с довольно хорошим ppi (у меня, например, 136 ppi) этот побочный эффект виден хорошо:

Происходит это по причине установки тени. Аналогичный эффект мы можем пронаблюдать при помощи этого кода:

Ссылка на ещё один мой вопрос на конкретно эту тему
С этой проблемой встречались многие. Погуглив по сети вы можете в этом легко убедиться. В качестве решения всегда предлагают просто вынести TextBlock из Border. Ну, верно, по другому вроде бы и не как - ведь всё содержимое родителя с тенью визуализируется в битмап, что отключает субпиксельное сглаживание (никакие SnapsToDevicePixels, UseLayoutRounding, TextOptions, RenderOptions и т.д. не помогут). Только такой трюк не пройдёт с окном)
Возможно, ответ на вопрос в том, что происходит, когда мы снимаем стандартный фрейм окна, устанавливая WindowChrome.
Ещё просто добавлю, что GlassFrameThickness это вызов DwmExtendFrameIntoClientArea DWM API.

Ответ
Итак, мне кажется, я сумел наконец понять проблему)
Задачей ставилось, по-сути, копирование вида стандартного окна Winodws 10 с выноской некоторых элементов на неклиентскую область (хром).
Таким образом, окно должно обладать следующими свойствами и поведениями:
Наличие стандартной тени окна Внешний resize border (это невидимая рамка, за которую мы тянет изменяя размер окна - она должна быть расположена "на тени", т.е. за пределами фрейма окна) Корректный вид в окошке предпросмотра на панели задач (если вы установите своему окну AllowsTransparency в True, на Windows 10 по крайней мере, оно может некорректно отображаться в миниатюре предпросмотра) Возможность выноса каких-то элементов на хром Устранение проблемы "съедания" краёв окна в Miximize mode Стандартные анимации разворачивания/сворачивания окна
Значит, решение всех этих проблем есть в ещё одном моём вопросе. Но всё же проблемы, поднятые в этом вопросе там не затрагиваются.
Как оказалось, решение в использовании DWM. При установке WindowChrome у окна убирается стандартный фрейм, что, как бы, логично. Но нам это, мягко говоря, не на руку. Тогда, чтобы оставить тень, стандартные анимации сворачивания/разворачивания, нужно просто оставить стандартный фрейм, меняя его цвет, вынося на него нужные элементы. Как это сделать, ответ есть тут.
Но важно помнить, что такое окно не будет выглядеть одинаково на всех платформах (я не говорю уже о Windows XP и более ранних ОС, где вообще нет DWM - он появился только начиная с Windows Vista). Дело в том, что вид стандартного фрейма везде разный, и вам придётся делать его заново в каждой ОС (при этом вид окна Windows 10 вы всё равно не сохраните).
Другое решение: организовывайте анимации разворачивания/сворачивания самостоятельно, как и тень (тут надо делать окно AllowsTransporency). Тогда у вас возникнут проблемы с миниатюрой предпросмотра (как решить это - не знаю).
Итог для меня: К чёрту эту тень. Мне так хорошо.