본문 바로가기

c# 그리고 WPF

WPF(C#) 모달 자식창 열고 값 받아오기

기본적인 흐름의 정리입니다.

 

부모창 ( WPF 윈도우 ) :  ParentScreen

자식창 (  WPF윈도우 ) :  ChildScreen

 

ParentScreen

//자식으로부터 받은 결과를 저장
string strFromChild="";

//자식창 인스턴스 생성
var screen = new ChildScreen();
//부모창 자신을 소유자(this)로 설정해서 모달윈도우로(ShowDialog)  자식창 열고 리턴 성공여부를 받음(result)
var result = screen.ShowDialog(this); // This가 없으면 결과값을 받지 못함
if(result==0) // 성공이면
{
     //자식 인스턴스 내의 public 멤버(or 프로퍼티)를 받음
     strFromChild = screen.strOfChild;
}

 

ChildScreen

public string strOfChild;
strOfChild = "이것은 자식으로 부터의 문자열입니다.";
this.DialogResult = true; //리턴  성공으로 알림

 

 

 

실제업무에서는 자식창으로부터 단순 문자열이 아니라 뷰 모델을 받아오거나 복잡하게 이용합니다.

자식창을 열때 소유자(this)설정을 하지 않으면 값 받는 부분이 에러가 됩니다.

this.DialogResult = true;  를 명시적으로 지정해주지 않으면 false가 되며, false여도 부모창에서 자식창의 strOfChild취득은 가능합니다.  그러나 명확하게 결과 상태를 공유하는 것이 좋겠네요.

반응형