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