C# WPF 자식객체에서 부모객체 호출하기
WPF를 사용하다보면 UserControl에서 Windows에 함수를 호출해야 하는 경우가 있다.
코드상으로 객체를 생성하면 별 문제가 없다. 생성할때 아래와 같이 자신의 객체를 넘겨 주면 알 수 있다.
private MainWindow ;
public DataManager()
{
this.InitializeComponent();
}
public DataManager(MainWindow parent)
{
this.InitializeComponent();
this.parent = parent;
}
위에와 같이 DataManager UserControl에 생성자를 하나 더 추가하고 MainWindow Window에서 생성할때
DataManager datamanager = new DataManager(this);
코드상으로 객체를 생성하지 않고 Xaml 코드를 사용하면 생성자에 객체를 넣어서 넘겨 줄 수가 없다.
이런 경우 난감해진다.
하지만 event를 사용하면 해당 이벤트를 호출하여 다른 객체에서 event를 감지하여 처리가 가능하다.
Xaml코드에서 해당 객체에 Name을 주고 코드에서 그 객체에 Event핸들러를 추가해 주면 된다.
1. UserControl에 event 변수를 추가 한다.
public event EventHandler EventDataManager;
2. Windows에서 객체에 Event처리 함수를 등록한다.
dataManager.EventDataManager += new EventHandler(dataManager_EventDataManager);
void dataManager_EventDataManager(object sender, EventArgs e)
{
//처리할 내용
}
3. UserControl에서 호출할 시점에 아래와 같이 Event를 발생 시킨다.
EventDataManager(this, null);
이렇게 사용하면 UserControl에서 버튼 클릭시 이벤트를 발생시키면 실제 처리는 등록해 놓은 함수가 Windows에 있기 때문에
Windows가 호출 된다. 그러면 Windows에서 객체를 사용하고 처리 하면 된다.
'Programming Lv1 > WPF + Blend' 카테고리의 다른 글
WPF MainWindow HWND 가져오기 (0) | 2013.04.09 |
---|---|
WPF 스레드 개체 액세스 문제 Dispatcher.Invoke (1) | 2013.01.30 |
RadGrideView 항목 수정, ReadOnly (0) | 2013.01.15 |
XamOutlookbar Group Click Event 적용 (0) | 2012.12.27 |
XamOutlookBar 레이아웃 변경 Blend (0) | 2012.12.26 |