WPF ElementHost无法启用双缓冲绘制

时间:2012-10-09 14:12:46

标签: wpf winforms double-buffering

您好我遇到了类似Question的问题。

对我来说不同的是,我在WinForms-MainForm中使用“CreateParams-Method”来强制双重缓冲。代码是(例如DataGridView draws wrong):

protected override CreateParams CreateParams
{
    get
    {
        // Activate double buffering at the form level.  All child controls will be double buffered as well.
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x02000000;   // WS_EX_COMPOSITED
        return cp;
    }
} 

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

简短说明:UserControl“打开”但它是透明的。用鼠标移动后,例如组合框被绘制。

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

1 个答案:

答案 0 :(得分:0)

更改WPF控件上的render mode对我有用:

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