您好我遇到了类似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?
答案 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;
}