블로그 이미지
평강왕자

카테고리

분류 전체보기 (35)
Programming Lv1 (32)
Programming LV2 (0)
취미 (3)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

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에서 객체를 사용하고 처리 하면 된다.

Posted by 평강왕자
, |

최근에 달린 댓글

글 보관함