2

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

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

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

请提出前进的方向。可以替代ElementHost工作吗?如果是这样,那是什么?

4

1 回答 1

1

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

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

注意:由于第 5 段中讨论的原因,当您在 Windows 窗体中托管 3D 或尝试打印 3D 场景时,这些 Wire 类将不起作用。要使其工作,请尝试将 OnRenderingWireBase 中的静态方法替换为以下内容:

static void OnRendering(object sender, EventArgs args)
{
    foreach (WireBaseAndUltimateParent wirebaseAndParent in listWireBases)
    {
        WireBase wirebase = wirebaseAndParent.wirebase;
        wirebase.OnRendering();
    }
}
于 2012-12-04T13:40:21.777 回答