2010-07-08 5 views
2

WPF XAML 페이지 내에 WinForms Form을 통합하려고합니다. WindowsFormsHost를 사용하여 Windows Forms 컨트롤을 배치하는 예제를 보았지만 전체 폼을 통합하는 것은 아닙니다.XAML WPF 내에 Winforms 폼 삽입

할 방법이 있습니까? Windows 양식은 WPF 응용 프로그램 내에서 호스팅되며 현재 새 창으로로드 할 수 있지만 XAML 페이지에는로드 할 수 없습니다.

답변

3

WPF 양식의 WindowsFormsHost 태그 안에 WinForms 양식을 삽입하는 것은 오류입니다. 그러나 WPF 프로젝트에서 새 양식을 인스턴스화 할 수 있습니다. 방법은 다음과 같습니다.

두 개의 프로젝트 "WinFormProj"와 "WPFProj"가 있다고합시다. WinFormProj에는 "로그인"이라는 양식이 있습니다.

먼저 WPFProj 프로젝트의 참조를 WinFormProj에 추가하십시오.

그리고 어떤 WPFProj 요소에 어떤 이벤트 뒤에 다음을 수행하십시오

var winFormWindow = new WinFormProj.Login(); 
winFormWindow.Show(); 
// or 
windFormWindow.ShowDialog(); 

을 그하지 않을 경우에, 당신은 당신의 윈폼이 는 WindowsFormsHost 단지 위대한 존재하는 사용자 컨트롤에 형성 변환 할 수 있습니다 WPF 태그. 클래스 선언과 변화에 ... 종종만큼 간단

이동을 그렇게하려면 :

public class Login : Form 

하려면
public class Login : UserControl 

다음, WPF 양식에서 윈폼을 추가 xml 네임 스페이스로 프로젝트 :

xmlns:winForms="clr-namespace:WinFormsProj;assembly=WinFormsProj" 

마지막으로 Grid/StackPanel/사용자가 원하는 위치에 추가하십시오. 호스트 :

<WindowsFormsHost Name="LoginControl"> 
    <winForms:LogIn /> 
</WindowsFormsHost> 

일단 당신이 그것을 demystify 꽤 간단합니다.