【问题标题】:Force WPF to render a window while hidden?强制WPF在隐藏时呈现窗口?
【发布时间】:2010-07-29 22:19:42
【问题描述】:

我注意到,当我在窗口隐藏时对窗口的视觉呈现进行更改时,在显示窗口时更改不会立即可见。相反,窗口会短暂显示为上次可见时的状态,显示更新后的表单需要 0.5-1 秒。

这可能会令人困惑和丑陋,因为当我的窗口显示时,它默认没有选择任何项目,但是如果在它关闭时选择了项目,它会看起来好像这些项目在打开时再次被选中,只是在一秒钟后消失。

有什么方法可以强制 WPF 渲染窗口,即使它不可见,这样当它显示时它处于正确的状态?

【问题讨论】:

  • 如何更新窗口?你可以重写 OnRender 方法并在那里做,你也可以调用 UpdateLayout() 我做了类似你的东西并没有遇到这个问题,这对我来说似乎有点奇怪。
  • 试试 window.InvalidateVisual() 方法。它会触发 OnRender 事件,但仅在窗口可见时才会触发,因此我不确定在隐藏窗口时它是否会为您做任何事情。你能在一个简单的示例中复制它并向我们展示代码吗?我试图自己复制它,但我做不到。
  • 不幸的是,它可能很难重现,因为您需要一个相对复杂的窗口才能使延迟明显。我也在处理自定义镀铬窗口,这可能与它有关。

标签: wpf rendering window delay


【解决方案1】:

原来这是操作系统的限制——如果窗口被隐藏,显然 WPF 无法访问窗口位图或其他东西。我通过将窗口的不透明度设置为 0 或 1 而不是隐藏/显示找到了一种解决方法,它似乎工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2013-12-25
    • 1970-01-01
    • 2013-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多