Итак, я нашел способ заставить это работать.
Вам нужно использовать библиотеку интеграции оболочки WPF ( здесь ), чтобы выполнить эту работу за вас.Как было написано MS, они исправили (кажется) любые проблемы с выполнением кода P / Invoke.
Таким образом, легко получить окно без Aero-стекла с изменяемым размером по краям., имеет область заголовка, которая работает с привязкой Aero, и имеет тень, которая появляется после мин / макс.
Это код моего окна (обратите внимание, вы должны ссылаться на Microsoft.Windows.Shell
)
<Window x:Class="MyLibrary.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="http://schemas.microsoft.com/winfx/2006/xaml/presentation/shell"
Title="MainWindow"
WindowStyle="SingleBorderWindow"
ResizeMode="CanResizeWithGrip"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="449"
d:DesignWidth="677"
Foreground="White"
Background="Black">
<shell:WindowChrome.WindowChrome>
<shell:WindowChrome CaptionHeight="35"
GlassFrameThickness="0,0,0,1"
ResizeBorderThickness="5" />
</shell:WindowChrome.WindowChrome>
<Grid x:Name="LayoutRoot">
</gGrid>
</Window>
* <shell:WindowChrome>
- это то место, где вы устанавливаете все различные переменные для взаимодействия.
CaptionHeight
: это высота области заголовка (панели заголовка), которая позволяетAero snap, двойное нажатие, как в обычной строке заголовка. GlassFrameThickness
: установка этого значения в 0,0,0,1
по какой-то причине удаляет хром (стекло), сохраняет квадратную границу и добавляет тень. ResizeBorderThickness
: это толщина по краю окна, в которой вы можете изменить размер окна.
Другие замечания, которые следует учитывать при сохранении Window.WindowStyleсвойство равняется SingleBorderWindow
и пусть ShellБиблиотека занимается удалением заголовка, кнопок и прочего хрома.
Так что я вроде как потратил впустую свою награду, но похоже, что это вполне жизнеспособное решение, которое приносит удовольствие!
Вот изображение результата: ![Sample Metro WPF Application](https://i.stack.imgur.com/ajPsg.png)
Я также выставил пример проекта на http://code.google.com/p/sample-metro-wpf-application/. Это лицензия MIT, и люди могут использовать ее по своему усмотрению.