WPF ElementHost无法在启用双缓冲的情况下绘制

WPF ElementHost无法在启用双缓冲的情况下绘制,wpf,winforms,double-buffering,Wpf,Winforms,Double Buffering,嗨,我遇到了与此类似的问题 与我不同的是,我在WinForms主窗体中使用“CreateParams方法”强制双缓冲。代码如下(例如): 我现在的问题是,只要这个CreateParams被激活,WinForms Usercontrol中我的WPF ElementHost的内容只有在出现鼠标悬停事件时才会被绘制 简短描述:UserControl“打开”,但它是透明的。当我用鼠标在上面移动后,例如,组合框被画出来 只要我注释掉CreateParams,一切都正常(使用WPF ElementHost)

嗨,我遇到了与此类似的问题

与我不同的是,我在WinForms主窗体中使用“CreateParams方法”强制双缓冲。代码如下(例如):

我现在的问题是,只要这个CreateParams被激活,WinForms Usercontrol中我的WPF ElementHost的内容只有在出现鼠标悬停事件时才会被绘制

简短描述:UserControl“打开”,但它是透明的。当我用鼠标在上面移动后,例如,组合框被画出来

只要我注释掉CreateParams,一切都正常(使用WPF ElementHost)。是否可以为WPFElementHost停用/使用不同的CreateParams?

更改WPF控件上的参数对我来说很有用:

private void Control_Loaded(object sender, RoutedEventArgs e)
{
    HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
    HwndTarget hwndTarget = hwndSource.CompositionTarget;
    hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
更改WPF控件上的设置对我很有用:

private void Control_Loaded(object sender, RoutedEventArgs e)
{
    HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
    HwndTarget hwndTarget = hwndSource.CompositionTarget;
    hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}

你解决过这个问题吗?我也遇到了同样的问题。@TormodFjeldskår:Nej。我从来没有找到解决这个问题的办法。我刚刚注释掉了整个应用程序的CreateParams部分。是吗?不,不幸的是没有。已从表单中删除CreateParams代码,并仅将其添加到不承载WPF控件的屏幕。您解决过此问题吗?我也遇到了同样的问题。@TormodFjeldskår:Nej。我从来没有找到解决这个问题的办法。我刚刚注释掉了整个应用程序的CreateParams部分。是吗?不,不幸的是没有。从表单中删除CreateParams代码,并仅将其添加到不承载WPF控件的屏幕。我无法再复制此代码,已经有一段时间了。。很抱歉不接受您的答案:/实际上,我后来发现这个答案有一个与图形驱动程序相关的问题,会导致整个系统在某些计算机上崩溃,它对大多数计算机工作正常,但我测试的5台机器中有1台用这个解决方案崩溃了。我无法再复制这个问题,已经有一段时间了。。非常抱歉不接受您的答案:/实际上,我后来发现这个答案有一个与图形驱动程序相关的问题,会导致整个系统在某些计算机上崩溃,它对大多数计算机都可以正常工作,但我测试的5台计算机中有1台使用此解决方案崩溃