[WPF] Event Notifier 사용 방법Frontend/WPF2022. 9. 15. 10:10
Table of Contents
반응형
컴포넌트 간의 데이터를 주고받을 경우 Prism의 EventAggregator를 사용하면 편리하지만 WPF 만을 사용할 경우 아래 코드와 같이 구성하여 사용하였습니다.
Event Manager
// EventManager.cs
namespace Tool.Event
{
public class EventManager
{
public delegate void EventHandler();
event EventHandler event;
public void Subscribe(EventHandler handler)
{
event += handler;
}
public void UnSubscribe(EventHandler handler)
{
event -= handler;
}
public void Publish()
{
event?.Invoke();
}
}
public class EventManager<T>
{
public delegate void EventHandler(T item);
event EventHandler event;
public void Subscribe(EventHandler handler)
{
event += handler;
}
public void UnSubscribe(EventHandler handler)
{
event -= handler;
}
public void Publish(T item)
{
event?.Invoke(item);
}
}
}
Event Notifier
// EventNotifier.cs
namespace Tool.Event
{
public class EventNotifier
{
public static EventManager<string> InputDataEvent = new EventManager<string>();
public static EventManager OpenEvent = new EventManager();
public static EventManager CloseEvent = new EventManager();
}
}
사용 예
이벤트 등록
namespace Tool.Views
{
public partial class TestWindow : Window
{
public TestWindow()
{
InitializeComponent();
}
private void CloseClick(object sender, RoutedEventArgs e)
{
this.Close();
EventNotifier.CloseEvent.Publish();
}
}
}
이벤트 받기
namespace Tool.ViewModwl
{
public class MainWindowViewModwl
{
public MainWindow()
{
EventNotifier.CloseEvent.Subscribe(CloseEvent);
}
private void CloseEvent()
{
Console.WriteLine("CloseEvent");
}
}
}
위의 코드는 다른 Window에서 창을 종료 시 메인 Window의 기능을 수행하기 위한 예제입니다.
반응형
'Frontend > WPF' 카테고리의 다른 글
[WPF] 이미지 불러오기 (0) | 2022.10.03 |
---|---|
[Devexpress] GridControl 자동 번호 매기기 (0) | 2022.10.03 |
[WPF] Slider Custom Style (0) | 2022.09.25 |
[WPF] Prism ViewModelBase 정의 (0) | 2022.09.25 |
[WPF] Prism Library 사용 방법 (0) | 2022.08.28 |
@고지니어스 :: 규니의 개발 블로그
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!