WPF自定义窗口:无法使用Win7 Aero Snap“解除”最大化窗口

时间:2010-10-13 13:23:39

标签: wpf .net-3.5 aero aero-snap

我有一个使用自定义窗口框架的WPF应用程序。我的问题是我无法在Windows 7中使用Aero Snap“解除”我的最大化窗口。

我的窗口属性:

  • AllowsTransparency设置为true
  • WindowStyle设置为None
  • ResizeMode设置为CanResizeWithGrip

我像这样处理窗口拖动:

private void TitleBarGrid_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    DragMove();
}

我可以将窗口停靠在左侧,右侧和顶部,并使其表现得像普通窗口一样(展开以填充屏幕的左半部分,展开以填充屏幕的右半部分,分别最大化)。

我不确定Aero Snap是如何工作的,但我发现奇怪的是普通的WPF窗口(非自定义窗口)工作得很好;如果它们最大化而没有问题,我可以解除它们。为什么然后将上述属性应用到我的窗口呢?

我是否有可能需要进行一些自定义WM消息处理才能使其正常工作?

1 个答案:

答案 0 :(得分:2)

我最终只使用了微软的WPF Shell Integration Library。它处理使Aero Snap工作所需的所有低级魔法。