c# - ElementHost 内的 WPF 控件呈现问题

标签 c# .net wpf winforms elementhost

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

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

enter image description here

最大化窗口或调整窗口大小时,控件会正确呈现 (减小尺寸使控件超出可见区域,然后再次增大尺寸使它们回到可见区域)

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

最佳答案

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

    if (hwndTarget != null)
    {
        hwndTarget.RenderMode = RenderMode.SoftwareOnly;
    }
};

尝试在您托管的 wpf 控件中使用它。这是在 win 窗体中托管的 wpf 控件的一个已知呈现问题。将渲染模式更改为仅软件将解决问题。

关于c# - ElementHost 内的 WPF 控件呈现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11859821/

相关文章:

c# - 更改 WPF 数据网格行颜色

当我尝试关闭响应时抛出 C# HTTPWebResponse 异常

c# - 静态类必须派生自对象 (C#)

java - Web 服务自定义绑定(bind) - 签署 SOAP header 和消息,但不加密

c# - 请允许我是应用程序域的新手,我如何使用应用程序域运行构造函数

C# Covariance puzzle,我遇到过

.net - Visual basic 2010 检查表单加载时文件是否存在

c# - 在整个 WPF 窗口上设置 KeyBinding

html - 在 WPF 中显示 HTML 内容

c# - 绑定(bind) Loaded 事件?