C# WPF에 Win Form 컨트롤 붙이기
WPF Sample 2008. 4. 3. 16:09 |Win Form 에서 WPF 를 추가 해서 사용할때는 ElementHost를 사용합니다.
자세한 내용은 Win Form 에 WPF 컨트롤 붙이기 를 참고 하시구요.
그렇다면 이제 반대로 WPF 에서 Win Form을 추가 해서 쓰고 싶을때는 어떻게 할까 고민해보니.
WindowsFormsHost 라는 객체를 이용하면 처리가 되네요.
<Grid>
<my:WindowsFormsHost ... />
</Grid>
이렇게 xaml 코드를 추가한 후에 cs 파일에서 추가를 아래와 같이 합니다.
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WindowsFormsControlLibrary1.UserControl1 uc =
new WindowsFormsControlLibrary1.UserControl1();
windowsFormsHost1.Child = uc;
}
중점 사항
- UserControl 클래스를 추가 해서 사용해야 합니다. 즉, userControl 의 dll 파일을 참조 추가 해서
사용해야 한다는 말이죠. - WPF 에서 Win Form의 UserControl의 객체를 접근하기 위해서는 노출이 되어 있지 않기 때문에 게터 메소드를 하나 만들어서 해야 합니다.
예) public string TextValue { get { return textBox1.Text; } } - 위의 게터 메소드가 노출되어 있다면 아래와 같이 WPF를 통해서 값을 참조할 수 있네요.
예) WindowsFormsControlLibrary1.UserControl1 uc =
(WindowsFormsControlLibrary1.UserControl1)windowsFormsHost1.Child;
textBox1.Text = uc.TextValue;
다른 몇가지 사항에 대해서는 더 테스트를 해보지 않았습니다.
우선 자세한 코드는 아래 파일을 보세요.
더 자세한 사항이나 기타 의논하고 싶으신 부분 있으시면 언제든 연락 부탁 해요.
관련 파일: