在我的 WPF 应用程序中,我通过设置 Window 样式的 WindowChrome 属性来覆盖默认的窗口镶边(如此处所述)。
我希望用户能够抓取窗口以将其调整到窗口外几个像素的大小,就像 Visual Studio 的做法一样。我已经玩过 ResizeBorderThickness,但这似乎只定义了窗口内的区域。
我怎么能这样做?
下面的 gif 演示了 Visual Studio 和我的应用程序之间的区别。
在我的 WPF 应用程序中,我通过设置 Window 样式的 WindowChrome 属性来覆盖默认的窗口镶边(如此处所述)。
我希望用户能够抓取窗口以将其调整到窗口外几个像素的大小,就像 Visual Studio 的做法一样。我已经玩过 ResizeBorderThickness,但这似乎只定义了窗口内的区域。
我怎么能这样做?
下面的 gif 演示了 Visual Studio 和我的应用程序之间的区别。
Visual Studio 的主窗口是一个 WPF 窗口,但它不使用操作系统提供的默认窗口镶边。
相反,它创建了一个自定义发光效果:实际上,该效果由四个本地窗口(每个都有自己的HWND
)实现,它们放置在主 (WPF) 窗口周围,并使用位图来呈现发光/阴影效果。
由于这些窗口可以处理鼠标输入,因此它们甚至可以在光标到达主窗口边界之前将鼠标光标切换到调整大小模式。
如果您认为创建自定义 chrome 窗口的努力是值得的,您可以尝试重新实现此功能。
您也可以为此尝试第三方组件,既可以按原样使用它们,也可以根据提供的源代码创建自己的分支。例如,看看ControlzEx库中的自定义 chrome 窗口。
否则,如果您认为这个小功能不值得任何额外的努力 - 好吧,也许最好只接受默认功能。