2012-11-19 3 views
2

WPF에서 .DLL을 만들었습니다. 기존 Windows Forms 응용 프로그램에서 사용하려면 ElementHost을 사용합니다.WPF를 Windows Form 내에서 호스팅하는 문제 - C#

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

UserWarps 부가 기능은 참조 된 WPF .DLL입니다. 이제 파일은 3D 조작을 많이합니다. 와이어 프레임 모델링을 위해 3D linesPetzold.Media3D을 사용하고 있습니다. WireLinesPetzold.Media3D 인 것은 모든 선을 그려 내지 않고 모든 것이 올바르게 작동합니다. 내가 다른 WPF 응용 프로그램에서 DLL을 참조하면 모든 것이 잘되지만 Windows 양식에서 wpf의 UserControl을 호스팅하면 줄/와이어 프레임이 제거됩니다. 모든 것이 완벽 함 - MeshGeometry3D, 모델, 영상, 기능 등

앞으로 나아가는 길을 제안하십시오. ElementHost에 대한 대안을 찾을 수 있습니까? 만약 그렇다면 그것은 무엇입니까?

+0

가 모달 또는 비 모달 창입니까? – Rauld

+1

"편집/솔루션"을 대답으로 이동하고 수락하십시오. –

답변

1

대답을 원래 질문에 OP로 추가했습니다. 나는이 질문을 에 보내지 않으려 고합니다.

Petzold는 Windows 양식에서 wpf를 호스팅하면 와이어 프레임이 사라지는 원인이 있다고 here에 언급했습니다.

참고 : 제 5 항에서 논의 된 이유로,이 와이어 클래스 당신이 윈도우 폼에서 3D를 호스팅하고 경우 일 때, 또는 당신을하지 않습니다 그는 또한있는 주변은 매우 간단하고 완벽하게 작동 작품을 게시 3D 장면을 인쇄하려고합니다. 그것이 작동되도록하려면 다음과 WireBase에 정적 OnRendering 방법을 교체해보십시오 :

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