让用户在窗口外抓住窗口调整大小

时间:2019-09-02 09:59:46

标签: wpf window-chrome

在WPF应用程序中,我通过设置Window样式的WindowChrome属性来覆盖默认的窗口镶边(如here所述。)

我希望用户能够抓住窗口以在窗口外调整几个像素的大小,就像Visual Studio那样。我已经玩过ResizeBorderThickness,但这似乎只能定义窗口内的区域。

我该怎么办?

下面的gif演示了Visual Studio和我的应用程序之间的区别。

Difference Visual Studio and my application

1 个答案:

答案 0 :(得分:1)

Visual Studio的主窗口是WPF窗口,但不使用操作系统提供的默认窗口镶边。

相反,它创建了一个自定义发光效果:实际上,该效果是由四个本机窗口(每个窗口都有自己的HWND)实现的,这些窗口放置在主(WPF)窗口周围,并使用位图进行渲染发光/阴影效果。

由于这些窗口可以处理鼠标输入,因此即使在光标到达主窗口的边界之前,它们也可以将鼠标光标切换到调整大小模式。

如果您认为创建自定义镶边窗口的工作值得,那么您可以尝试重新实现此功能。

您也可以尝试使用第三方组件,可以按原样使用它们,也可以根据提供的源代码创建自己的fork。例如。来看看ControlzEx库中的自定义镶边窗口。

否则,如果您认为此小功能值得您花些功夫-那么,最好接受默认功能。