2012-11-19 60 views
2

我已經在WPF中創建了一個.DLL。要在現有的Windows Forms應用程序中使用它,我使用ElementHost託管Windows窗體內的WPF給出的問題 - C#

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

UserWarps是WPF .DLL已添加引用。現在這個文件做了很多3D操作。我也使用Petzold.Media3D代替3D lines進行線框建模。一切工作正常,除了WireLinesPetzold.Media3D沒有畫任何線條。如果我參考其他WPF應用程序的DLL,一切都很好,但在Windows窗體中託管wpf的UserControl消除了線/線框。休息一切都很完美 - MeshGeometry3D,模型,視覺效果,功能等

請建議前進的方向。可以替代ElementHost工作嗎?如果它確實那麼它是什麼?

+0

是模式或無模態窗口? – Rauld

+1

將「編輯/解決方案」移至答案並接受答案。 –

回答

1

添加最初由OP討論加入我不想這個問題 被關閉的,只是因爲那些答案。

Petzold提到here在Windows窗體中託管wpf會導致Wire幀消失。他還張貼周圍的工作,這是非常簡單和完美工作:

注:在第5段討論的原因,這些電線類將 不是當 你在Windows窗體主機3D工作,或者當你試圖打印3D場景。爲了使其工作,嘗試用以下取代靜態 OnRendering方法WireBase:

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