【问题标题】:ElementHost - Black Background when calling Show methodElementHost - 调用 Show 方法时为黑色背景
【发布时间】:2015-07-12 07:57:50
【问题描述】:

首先我会说我在谷歌上搜索过这个问题,并且有很多关于这个的话题,但没有一个能帮助我解决我的问题(例如:ThisPostOr ThisOr this

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

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

【问题讨论】:

  • 你能提供一些代码吗?我正在尝试通过创建简单的 wpf 控件并使用 ElementHost 在 winforms 中托管它来重现您的问题,但我没有任何闪烁问题。
  • 嗨,感谢您尝试解决此问题,我尝试使用我的问题示例创建一个新的解决方案,但我无法重现它(看起来它工作正常),我猜问题来自于 WPF 控件或 WinForm 的繁重加载,一旦我能够重现问题,我将上传我的代码。

标签: c# wpf winforms


【解决方案1】:

我遇到了和你一样的问题,我能找到的其他答案都没有真正奏效,因此经过长时间的故障排除后。我找到了答案。

如果您在初始构造函数中构建从 Element Host 扩展的类。您可以为主机容器设置加载事件。 Host Container 是 Element Hosts Child 显示在上面的面板。从那里,只需将 Host Containers 背景颜色设置为 Element Hosts Parents 背景颜色。

这样

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

【讨论】:

    猜你喜欢
    • 2011-01-06
    • 1970-01-01
    • 2017-02-18
    • 2014-01-30
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多