노무현 전 대통령 서거 - 삼가 고인의 명복을 빕니다
Wpf와 WinForm에서 똑같은 컨트롤들이 존재한다. 하지만 Wpf와 WinForm의 컨틀롤에는 차이가 있기때문에 완전히 똑같이 구현하기 힘들 었다. 그래서 찾은 방법이 Wpf에서 WinForm의 컨트롤을 그대로 가져가 사용 하는 방법이다.

WindowsFormsHost Class(MSDN참조)
http://msdn.microsoft.com/ko-kr/library/system.windows.forms.integration.windowsformshost(VS.85).aspx

비하인트 코드에서 Winform 컨트롤 생성방법
  • System.Windows.Forms.Integration을 참조 한다.(WindowsFormsHost 사용을위해)
  • WinForm으로 구현된 프로젝트 또는 코드파일을 추가한다.
  • Wpf프로젝트에서 WinFrom프로젝트(namespace)를 참조한다.

 
         private void TestWinFormControlInWpf_Loaded(object sender, RoutedEventArgs e)  
        {  
            TestWinFromControl.MyControl control = new TestWinFromControl.MyControl();  
 
            WindowsFormsHost host = new WindowsFormsHost();  
            host.Child = control;  
            this.Content = host;  
 
            WindowsFormsHost.EnableWindowsFormsInterop();  
        }  


xaml에서 Winform 컨트롤 생성방법

  • 비하인트 코트 방식 같은 절차를 거친다
  • xmlns 키워드로 컨트롤 어셈블리를 참조한다

 
<Window x:Class="WpfApplication1.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"   
    xmlns:lib="clr-namespace:TestWinFromControl;assembly=TestWinFromControl" 
    Title="Window1" Height="600" Width="600">  
    <Grid> 
         <WindowsFormsHost>  
       <lib:MyControl></lib:MyControl>  
        </WindowsFormsHost>   
 
    </Grid> 
</Window> 

※ WindowsFormsHost또한 도구상자에서 지원하는 컨트롤중에 하나이다. 크기를 정하고 싶다면 속성으로
줄수 있다.


Trackback 0 | Comment 0

고독한개발자's Blog is powered by Daum & tistory