ElementHost - 调用Show方法时的黑色背景

时间:2015-07-12 07:57:51

标签: c# wpf winforms

首先,我会说我搜索了这个问题,并且有很多话题,但这些都没有帮助我解决我的问题(例如:ThisPostOr ThisOr this

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

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

1 个答案:

答案 0 :(得分:0)

我遇到了与您相同的问题,而我找不到其他答案可以实际使用,因此经过长时间的问题排查。我找到了答案。

如果您构建一个从Element Host扩展并在初始构造函数中扩展的类。您可以为主机容器设置加载事件。 “主机容器”是“元素主机子级”显示在其上方的面板。从那里,只需将“宿主容器”的背景色设置为“元素宿主父对象”的背景色即可。

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));
    }
}