找到将窗口停靠在左/右侧

时间:2013-08-09 03:45:04

标签: c# wpf xaml

有没有办法找出用于检测左侧或右侧窗口对接的EVENT(或属性或方法等)?

说明

  • 使用WindowState属性,您可以找到当窗口在这三种状态之间改变状态时正常/最小化/最大化。在Windows 7之后,您可以进行两种对接" Dock To Left"和#34; Dock To Right"。我无法在Window Class中找到任何属性或事件。
  • 您可以使用 WinKey + Left 将窗口停靠在左侧,或使用 WinKey + Right 将窗口停靠在右侧。

问题:

我需要在向左或向右对接后在窗口中进行一些更改。我需要在WPF / XAML中使用一个触发器,但我无法找到与左/右对接相关的任何属性或事件。

3 个答案:

答案 0 :(得分:2)

没有任何特殊事件,因为'对接'左/右不是像最小化/最大化那样的特殊操作,而只是一种重新定位窗口的特定方式。用户可以模仿对接'完全通过恢复,移动和调整窗口大小。因此,您的UI逻辑似乎有问题。想象一下,用户恢复窗口然后调整大小,使其填充靠近屏幕右边缘的大约半个屏幕。会发生什么?

Protip:可能有多个显示器,你的窗户可能会跨越它们。

答案 1 :(得分:0)

我是在模板的窗口周围完成此操作的

<Border BorderBrush="Transparent" BorderThickness="5" Margin="-5" Effect="{DynamicResource ShadowEffect}">
  <...>
</Border>

负边距会否定边框的厚度。

答案 2 :(得分:0)

在SizeChanged事件中,您可以检测窗口是否停靠在其中:

bool isDocked = 
     window.WindowState == WindowState.Normal &&
     window.Width != window.RestoreBounds.Width &&
     window.Height != window.RestoreBounds.Height

至少,这是一个很好的指标。