【问题标题】:How to redraw revealed windows on (custom) window resize如何在(自定义)窗口调整大小时重绘显示的窗口
【发布时间】:2015-04-29 22:10:33
【问题描述】:

我在 WPF 中有一个有点奇怪的问题,我在其中创建了一个自定义窗口类型(主要带有通知图标和自定义镶边)。在正常情况下它工作正常(例如使用手柄调整大小等)。但是,当尝试使窗口自动调整大小以适应内容时,我最终遇到了这样一种情况,即它可以在不重新绘制其后面的窗口的情况下将其调整为更小。

当窗口被移动(通过DragMove())时,它会正确地重新绘制它后面的所有东西,但在它移动或被隐藏之前,什么都不会发生。

谁能告诉我DragMove() 正在生成哪些消息导致先前被窗口客户区隐藏的区域无效并正确重绘?我试过 WM_PAINT 指向我的自定义窗口,但要么它什么都不做(例如,windows 不希望我收到 WM_PAINT 消息),要么它只重绘当前客户区,而不是前一个客户区。

【问题讨论】:

    标签: c# wpf redraw


    【解决方案1】:

    虽然我无法确定问题发生的原因,并且这不是我提出的问题的答案,但我能够通过采用不同的方法来解决问题。以前,我一直绑定MaxHeightMinHeight;最终起作用的是使用SizeToContent 代替(它不会像我的方法中绑定到MaxHeightMinHeight 那样无法渲染恢复背景),然后删除了调整我的控件大小的能力。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 2011-01-22
      • 2016-07-08
      相关资源
      最近更新 更多