WPF 양식 내의 일종의 컨테이너 또는 래퍼 유형 제어 내에서 전체 WinForms 양식 (단일 컨트롤뿐만 아니라)을 호스트/표시하는 방법이 있습니까? PHP 또는 HTML iframe에서 가상 포함하는 것과 비슷한 개념을 찾고 있습니다. 가능하면 OCX 또는 DLL로 컴파일합니다.컨테이너/래퍼를 통해 WPF 폼 내에서 WinForm 양식을 호스팅 할 수 있습니까?
답변
내 지식에 따라 WPF에서 실제 WinForms 양식을 호스팅 할 수 없습니다.
그러나 좋은 대안은 모든 필요한 기능과 하위 컨트롤이 포함 된 Winforms (Windows Forms 컨트롤 라이브러리 프로젝트)의 일반 UserControl을 만드는 것입니다.
그런 다음 WPF 프로젝트에서 WindowsFormsIntegration.dll (참조 추가의 .NET 탭에 있음)을 참조하십시오.
또한 WinForms UserControl이 포함 된 어셈블리를 참조하고 마지막으로 WindowsFormsHost 컨테이너를 XAML에 추가합니다.
자세한 내용은 useful tutorial by Sacha Barber를 참조하십시오.
WinForms에 대한 컨트롤로 exe를 호스트하는 방법을 보여주는 기사가 있습니다 (Tab 페이지를 사용하는 응용 프로그램, Winform.exe를 끌어다 놓은 상태에서 해당 윈도우가있는 탭 페이지를 만듭니다) 이 기사에서 파생 된 here WPF를 특별히 요구 했는지도 모르지만, 아마도 올바른 방향으로 인도 할 수 있습니까?
호프가 도움이 되었으면 안녕하세요, 탐.
다음과 같은 코드로 작업을 수행 할 수 있습니다
당신의 XAML에서 :에서
<WindowsFormsHost name="wfHost" />
코드 숨김
이 이Form foo = new Form();
foo.TopLevel = false;
foo.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
wfHost.Child = foo;
+1, 조금 알려진'TopLevel'. Microsoft Access *와 같은 "하위 양식"기능을 복제하려면 * .NET Compact 1.1 *에서이 작업을 수행하는 데 사용됩니다. – AMissico
이 함께가는 끝나지 않았다하지만 그것의 멋진 도구. 링크를 가져 주셔서 감사합니다. – jasonk