Window/WPF2010. 3. 12. 16:53

WPF 컨트롤을 Winform 내부에 포함시키기 위해서는

ElementHost 클래스를 사용할 수 있습니다.

 

ElementHost 클래스는 System.Windows.Forms.Control을 상속받은 윈폼 컨트롤로

WPF 엘리먼트를 포함시킬 수 있도록 특화된 클래스입니다.

 

자, 이제 하나 하나 알아보겠습니다.

 

우선 윈폼 프로젝트를 생성 후 다음과 같이 참조 추가를 선택 하여,

 

 

WindowsFormIntegration.dll 을 추가합니다.

 

그럼 이제 포함 방법들에 대해 알아보겠습니다.

 

1) C# 코드

 

코드로만 작성 시엔 PresentationCore.dll, PresentationFramework.dll을 추가 후

 

다음과 같이 네임스페이스를 추가합니다.

 

using System.Windows.Controls;

using System.Windows.Forms.Integration;

 

간단하게 WPF 컨트롤 중 버튼을 추가해보겠습니다.

 

 ElementHost host = newElementHost();

 

 System.Windows.Controls.Button btn = new System.Windows.Controls.Button();

 btn.Content = "WPF Button!!";

 

 host.Child = btn;

 host.Location = newPoint(45, 10);

 

 this.Controls.Add(host); 

 

System.Windows.Controls.Button과 System.Windows.Forms.Button 사이의 모호성 때문에

위와 같이 정확한 타입을 명시해야 합니다.

 

2) 도구 상자

 

윈폼 창을 선택 후 도구상자를 열어 ElmentHost 선택하여 윈폼 안에 위치시킵니다.

자동으로 PresentationCore.dll, PresentationFramework.dll이 추가됩니다.

    

 

간단한 TextBlock을 추가해 보겠습니다.

 

 TextBlock tb = newTextBlock();

 tb.Text = "WPF TextBlock!!";

 

 elementHost1.Child = tb;

 

3) WPF UserControl

 

우선 UserControl을 생성하겠습니다.

 

Xaml 의 내용은 간단하게 버튼을 위치시킨 후 Click 이벤트를 주었습니다.

 <Grid>
     <Button Click="Button_Click">
         WPFControl!!
     </Button>
 </Grid
>
 

 privatevoid Button_Click(object sender, RoutedEventArgs e)

 {

     MessageBox.Show("WPF Button!!");

 }

 

윈폼에 ElementHost 를 올려 놓은 뒤 ◀를 눌러 WPFControl 목록을 선택합니다. 


4) 윈폼 컨트롤을 포함한 WPF 컨트롤 포함하기

 

이번엔 윈폼 컨트롤인 MonthCalendar를 포함하는 WPF Button 컨트롤을 포함해 보겠습니다.

WindowsFormsHost 의 Child로 MonthCalendar를 포함 후

Button의 Content로 추가하였습니다.

 

 WindowsFormsHost wHost = newWindowsFormsHost();

 wHost.Child = newMonthCalendar();

 

 System.Windows.Controls.Button btn1 = new System.Windows.Controls.Button();

 

 btn1.Content = wHost;

 elementHost3.Child = btn1;

 

자 지금까지의 결과를 확인해 보겠습니다.

   

 

Using WPF in Winform.zip

'Window > WPF' 카테고리의 다른 글

[ WPF ] Flash in WPF  (3) 2010.04.23
[ WPF ] 캡쳐보드 카메라 사용하기  (0) 2010.04.22
[ WPF ] 옆으로 흐르는 TextBlock  (0) 2010.03.11
[ WPF ] Page간 데이터 전달  (0) 2010.03.06
[ WPF ] 간단한 Image Animation  (2) 2010.02.12
Posted by 열ㅇl