본문 바로가기
프로그래밍

WPF와 WinForm 의 연동 전체공개

by 건우아빠유리남편 2010. 4. 29.
반응형


WinForm 프로젝트에 WPF 사용자 정의 컨트롤을 추가한다

 

이렇게 하면 UserControl 이라는 WPF 코드가 생성된다.

 

WinForm 디자인창에서 WPF 상호 운용성 -> ElementHost를 넣어 준다.

 

ElementHost  의 Child를 생성한 UserControl 로 설정해주거나

▶ 눌러서 설정해 준다.

 

-- WinForm 에서 WPF에 있는 컨트롤에 접근하려면 다음과 같이 간단하게 된다.

 

// WPF 안에있는 TextBox에 접근해 보자
            (this.elementHost1.Child as UserControl1).txt.Text = "!!!! ㅋㅋㅋ";

 

-- WPF 에서 부모인 WinForm에 접근하려면 조금 더 복잡하다.

 부모 자식관계 트리구조는 WinForm -> ElementHost -> UserControl(WPF) 와 같다.

 

우선 WPF 코드비하인드에서 부모폼을 선언해 주고 메서드와 멤버를 지정해준다(리팩터링 해도 되고, 써줘도 되고..)

 

        //private Form1 parentForm; //** 리팩터링 -> 필드캡슐화
        //public Form1 ParentForm
        //{
        //    get { return parentForm; }
        //    set { parentForm = value; }
        //}

        public Form1 parentForm{get; set;} //** 위의 주석처리한 툴을 이용한 코드 생성과 같다(자동구현프로퍼티)

그리고 부모폼에서 WPF에게 부모가 나다 라고 알려준다.

 

// WPF 컨트롤에게 부모가 나다 라고 알려주자
            (this.elementHost1.Child as UserControl1).parentForm = this; //!!!**

 

위의 작업을 해주고 나면 WPF에서 아래와 같은 방법으로 부모창(WinForm)에 접근이 가능하다.

 

this.parentForm.textBox1.Text = "메뉴1";





반응형

댓글