【问题标题】:hosting WPF inside Windows Form giving issues - C#在 Windows 窗体中托管 WPF 给出问题 - C#
【发布时间】:2012-11-19 10:52:20
【问题描述】:

我在 WPF 中创建了一个 .DLL。要在现有的 Windows 窗体应用程序中使用它,我使用 ElementHost

ElementHost eleHOst = new ElementHost();
UserWarps userWarps = new UserWarps();
eleHOst.Child = userWarps;
eleHOst.Dock = DockStyle.Fill;

UserWarps 位于已添加引用的 WPF .DLL 中。现在该文件做了很多 3D 操作。我还将Petzold.Media3D 用于3D lines 用于线框建模。一切正常,除了Petzold.Media3DWireLines 没有画线。如果我从其他 WPF 应用程序引用 DLL,一切都很好,但在 Windows 窗体中托管 wpf 的 UserControl 会消除线条/线框。休息一切都很完美 - MeshGeometry3D、模型、视觉效果、功能等。

请提出前进的方向。 ElementHost 的任何替代品都可以吗?如果有,那是什么?

【问题讨论】:

  • 是模态窗口还是非模态窗口?
  • 将“编辑/解决方案”移至答案并接受。

标签: c# .net wpf windows winforms


【解决方案1】:

添加最初由 OP 添加的答案,因为我不希望这个问题 正因为如此而被关闭。

Petzold 提到here 在 Windows 窗体中托管 wpf 会导致线框消失。他还发布了一个非常简单且完美的工作:

注意:由于第 5 段中讨论的原因,这些 Wire 类将 不工作时 您在 Windows 窗体中托管 3D,或者当您尝试打印 3D 场景时。要使其正常工作,请尝试更换静态 WireBase 中的OnRendering 方法如下:

static void OnRendering(object sender, EventArgs args)
{
    foreach (WireBaseAndUltimateParent wirebaseAndParent in listWireBases)
    {
        WireBase wirebase = wirebaseAndParent.wirebase;
        wirebase.OnRendering();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多