在 WinForms MDI 应用程序中托管 WPF 用户控件时,当您有多个相互重叠的表单时会出现绘图问题,从而导致非常明显的视觉伪影。在将一个子窗体拖到另一个也承载 WPF 内容的子窗体上之后,或者通过在拖动子窗体时允许主 MDI 父窗体剪裁子窗体的边缘后,这些工件大部分可见。子窗体的拖放完成后,工件通常会保留下来,但我发现将焦点设置到不同的应用程序窗口,然后重新聚焦到我的应用程序窗口,它被重绘并且一切都很好,直到孩子表格再次移动。请参阅下图,它演示了该问题。
微软的人坚持认为 WinForms MDI 已经是 MDI 的充分解决方案,不需要在 WPF 中重新发明,尽管我发现很难相信他们尝试以这种方式创建 WPF 应用程序,因为存在明显的缺点。
更新:我遗漏的一些额外注意事项是,如果我在不设置 MdiParent 的情况下创建这些表单,它们将被创建为常规表单,并且不会发生此问题。这个问题似乎是 WinForms MDI 方案所独有的。此外,我目前在 Windows 7 Enterprise 上运行,我知道 Windows XP 上的结果可能完全不同,但我无法对此进行测试。
更新:我发现了一些关于这个问题的其他相关资源,我认为我应该分享。