Winforms WPF Interop - WPF内容无法绘制

use*_*309 10 .net c# wpf winforms

我有一个使用ElementHost来显示WPF UserControl的WinForm.表单加载时,每50次左右,WPF内容无法绘制.您可以通过WinForm chrome查看下面的内容.调整窗口大小可以显示WPF内容.

这是一个已知的问题?任何人都可以建议解决方法?

cpl*_*tts 12

我们之前已经打过这些类型的问题.有关我们特定风味的更多信息,请参阅此WPF论坛帖子(我不知道它是否是同一个问题).

我们发现唯一可行的方法是改变ElementHost的大小.

_elementHost.Width++;
Run Code Online (Sandbox Code Playgroud)

这是一个完整的黑客,丑陋,甚至发布它我都很尴尬.但没有别的东西对我们有用.所以,这绝对是一种解决方法.(GRIN)

我们在ElementHost上尝试了Invalidate,Refresh和我们能想到的一切...... 我们还在WPF托管内容上尝试了InvalidateMeasure,InvalidateArrange和InvalidateVisual.没运气.

如果您找到另一种方法来解决问题,我很乐意听到.

祝你好运,我知道我已经失去了一些头发.

更新1: 我已经提交了另一个WPF论坛帖子.也许我们可以得到微软的回复.当然对我来说似乎是个错误.

更新2: 我用上面的黑客修复了刷新问题......我还有另外一个问题需要解决,我觉得这里值得一提.那就是:在屏幕刷新之前有一定的延迟.这使得用户似乎导航到另一个屏幕(它不是......它只是双缓冲缓冲区的内容).我最终不得不在托管ElementHost的Control上手动调用System.Windows.Forms.Control.Refresh().通过这种方式,即使暂停仍然存在...至少屏幕是空白的...并且它看起来不像用户在某处导航...