如何在(自定义)窗口重新调整大小时重绘显示的窗口

时间:2015-04-29 12:40:51

标签: c# wpf redraw

我在WPF中有一个奇怪的问题,我在其中创建了一个自定义窗口类型(主要带有通知图标和自定义chrome)。在正常情况下它工作正常(例如使用句柄调整大小等)。但是,当试图使窗口自动调整大小时,我最终会遇到这样一种情况:它可以调整大小而不重新绘制它背后的窗口。

当移动窗口时(通过DragMove()),它会正确地重新绘制它背后的所有内容,但是直到它移动或被隐藏,没有任何反应。

有人能告诉我,DragMove()正在生成哪些消息会导致先前由窗口客户区隐藏的区域无效并重新正确显示?我已经尝试WM_PAINT指向我的自定义窗口,但要么它什么都不做(例如,窗口不会期望来自我的WM_PAINT消息)或者它只重新绘制当前客户区域,而不是之前的客户区域

1 个答案:

答案 0 :(得分:0)

虽然我无法确定问题发生的原因,但这不是我提出的问题的答案,但我能够通过采用不同的方法来解决问题。以前,我对MaxHeightMinHeight具有约束力;最终工作的是使用SizeToContent代替(它没有同样无法将恢复背景渲染为MaxHeightMinHeight在我的方法中所做的绑定),然后被移除能够调整我的控制力。

这个不是答案(如果有人知道如何强制窗口重绘窗口曾经占用的区域,我仍然感兴趣),但它确实如此解决问题。

相关问题