[C# - Prism] 프리즘 예제 14 - UsingEventAggregatorC#/Prism2023. 8. 14. 22:17
Table of Contents
안녕하세요, 반나무입니다.
이번 예제는 EventAggregator를 사용하는 방법을 안내합니다.
Aggregator 뭔가 단어만으로는 탁! 감이 오지않아서 검색해보니 어떤 정보를 모아서 제공하는 듯한 느낌이네요
EventAggregator는 여기저기 다른 모듈에 퍼져있는 Event들을 모아서 처리 할 수 있도록 해주는 기능입니다.
왼쪽이 ModuleA / 오른쪽이 ModuleB입니다.
UsingEventAggregator.Core
지난 예제에서 설명했듯이, 여러 모듈들이나 다양한곳에서 접근하는 기능들은 .Core에 생성합니다.
이번 예제에서는 Event를 .Core에 생성했습니다.
namespace UsingEventAggregator.Core
{
// MessageSentEvent라는 Event를 만든다
// string 타입의 데이터가 넘어온다는것을 알린다.
public class MessageSentEvent : PubSubEvent<string> { }
}
ModuleA
모듈A에서는 Message를 Binding해 입력받습니다.
public class MessageViewModel : BindableBase
{
IEventAggregator _ea;
private string _message = "Message to Send";
public string Message
{
get { return _message; }
set { SetProperty(ref _message, value); }
}
public DelegateCommand SendMessageCommand { get; private set; }
public MessageViewModel(IEventAggregator ea)
{
_ea = ea;
SendMessageCommand = new DelegateCommand(SendMessage);
}
private void SendMessage()
{
// EventAggregator에 메세지를 배포한다.
_ea.GetEvent<MessageSentEvent>().Publish(Message);
}
}
ModuleB
모듈B에서는 Event로 들어온 Message를 Collection에 Add하는 작업을 합니다.
public class MessageListViewModel : BindableBase
{
IEventAggregator _ea;
private ObservableCollection<string> _messages;
public ObservableCollection<string> Messages
{
get { return _messages; }
set { SetProperty(ref _messages, value); }
}
public MessageListViewModel(IEventAggregator ea)
{
_ea = ea;
Messages = new ObservableCollection<string>();
// Event를 구독한다. (콜백 메소드 구현)
_ea.GetEvent<MessageSentEvent>().Subscribe(MessageReceived);
}
// 콜백 메소드 : message로 받은 string을 ObservableCollection에 add한다.
private void MessageReceived(string message)
{
Messages.Add(message);
}
}
반응형
'C# > Prism' 카테고리의 다른 글
[C# - Prism] 프리즘 예제 16 - RegionContext (0) | 2023.09.02 |
---|---|
[C# - Prism] 프리즘 예제 15 - FilteringEvent (0) | 2023.08.27 |
[C# - Prism] 프리즘 예제 13 - IActiveAwareCommands (0) | 2023.08.08 |
[C# - Prism] 프리즘 예제 12 - UsingCompositeCommands (0) | 2023.08.06 |
[C# - Prism] 프리즘 예제 11 - UsingDelegateCommand (0) | 2023.08.05 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!