使用ElementHost中的WPF控件呈现问题

akj*_*shi 13 .net c# wpf elementhost winforms

我有一个WinForms控件,里面我有一个TableLayoutPanel包含多个ElementHosts,每个ElementHost包含一个WPF控件.

一切都很好,除非控件的大小比窗口大,并且ScrollBar在那里; 当我向下滚动时,控件变得扭曲,就像这样 -

在此输入图像描述

在最大化窗口或重新调整窗口大小时,控件可以正确渲染(减小控件的大小,使控件离开可见区域,然后再次增大大小以使其返回可见区域)

在WPF窗口的同一窗口中,WinForms控件不会发生这种情况; 知道为什么会这样,有什么解决方案吗?

小智 15

this.Loaded += delegate
{
    var source = PresentationSource.FromVisual(this);
    var hwndTarget = source.CompositionTarget as HwndTarget;

    if (hwndTarget != null)
    {
        hwndTarget.RenderMode = RenderMode.SoftwareOnly;
    }
};
Run Code Online (Sandbox Code Playgroud)

尝试在您托管的wpf控件中使用它.这是win表单中托管的wpf控件的已知呈现问题.仅将渲染模式更改为软件才能解决问题.