I've created a borderless WPF window by setting the following window properties in XAML:
... WindowStyle="None" AllowsTransparency="True" ...
This causes a number of issues:
1) Resolved: It no longer has any built-in resize functionality
2) Resolved: It no longer has any built-in drag functionality
3) Resolved: Without the top toolbar, it no longer has minimize/maximize/restore/close buttons
4) Resolved: Maximizing via aero snap or setting WindowState prevents it from unsnapping.
5) Maximizing via aero snap or setting WindowState will use the whole screen as the boundary, overlapping the windows toolbar.
6) Maximizing via aero snap or setting WindowState seems to include a -7 margin, giving the window 7 pixels on each side that are beyond the edges of the window.
1-3 were solved by making a xaml window template. I used invisible rectangles as handle regions, and some code behind that was applied via overriding OnApplyTemplate() to attach functionality via user32.dll SendMessage(...) for resize/move/minimize/maximize/restore/close.
I found the answer to # 4 here
I tried solving 5-6 by intercepting the maximize message via WndProc and setting the size/position manually, but this had the issue of overwriting the RestoreRegion to the maximized size/position, removing the ability to restore the window.
What's really odd is that resizing the window from the top border to the top of the screen triggers the aero full height snap just fine, with no issues at all.
So, I've come a long way, but 5-6 is still an issue... is there a way to manually specify the maximize region? Or, is there a way to set the window size without affecting the restoreregion property?