Проблема: хочу сделать окно со своим дизайном на WPF, но при убирании бордюра (NoBorder) оно перестает ресайзиться и двигаться за заголовок
Решение: Специально для этого в 7 и Vista есть библиотечка с пространством имен Microsoft.Windows.Shell, физически лежащим в PresentationFramework.dll. Там есть класс WindowChrome. Это лучше понимать как "хром окна", но по факту не только окна, но и любого элемента. Он содержит в себе набор attached-пропертей для манипулирования неклиентской областью окна. Пример:
<Style TargetType="{x:Type Window}"> <Setter Property="shell:WindowChrome.WindowChrome"> <Setter.Value> <shell:WindowChrome CaptionHeight="24" CornerRadius="0" GlassFrameThickness="0,0,0,-1" NonClientFrameEdges="None" ResizeBorderThickness="7" UseAeroCaptionButtons="False"/> </Setter.Value> </Setter> </Style>
Тут можно задать высоту невидимого заголовка и толщину невидимых бордюров для изменения размеров. Невидимый заголовок в данном случае будет - полоска сверху окна высотой в 24px, за которую можно будет потянуть и перетащить окно. Если вам нужно разместить в этой зоне еще какие-нибудь элементы - не забудьте проставить им
shell:WindowChrome.IsHitTestVisibleInChrome="True"
А для ResizeGrip (или за что у вас там тянется, чтобы изменить размер окна):
shell:WindowChrome.ResizeGripDirection="BottomRight"
И все проблемы с перемещением окна будут решены.