ElementHost -当调用显示方法时黑色背景

本文关键字:黑色 背景 方法 显示 调用 ElementHost | 更新日期: 2023-09-27 18:02:13

首先我会说我在谷歌上搜索了这个问题,有很多关于这个问题的话题,但没有一个帮助我解决了我的问题(例如:ThisPost, Or this, Or this)

所以问题是,我有一个Windows窗体应用程序,主机WPF应用程序。我有一个ElementHost对象,它包含WPF控件作为子控件。当我使用。show方法时,我有黑色闪烁1或2秒,然后我看到我的wpf的内容。

我试着玩可见性或放置不同的背景,或设置空边界之前,但这些都没有帮助我。如果有人有不同的解决方案,请与我分享。

ElementHost -当调用显示方法时黑色背景

我有和你一样的问题,我能找到的其他答案都没有实际工作,所以经过很长时间的故障排除问题。我找到了答案。

如果在初始构造函数中构建一个从Element Host扩展的类。您可以为主机容器设置一个加载事件。主机容器是Element Hosts子元素显示在其上的面板。然后,将宿主容器的背景色设置为与元素宿主父元素的背景色相同。

这样的

using System.Windows;
using System.Windows.Forms;
using System.Windows.Forms.Integration;
using System.Windows.Media;
public class MyElementHost : ElementHost
{
   public MyElementHost()
    {
        this.HostContainer.Loaded += new RoutedEventHandler(HostPanelLoad);
    }
    public void HostPanelLoad(object sender, RoutedEventArgs e)
    {
        System.Drawing.Color parentColor = this.Parent.BackColor;
        this.HostContainer.Background = new SolidColorBrush(Color.FromArgb(parentColor.A, parentColor.R, parentColor.G, parentColor.B));
    }
}