KeiStory

728x90
반응형

C# Blazor Prism EventAggregator 사용하기

 

WPF 에서 화면 간 데이터 전달을 위해서 Prism 의 EventAggregator 를 사용하였습니다.

Blazor 에서도 화면 간 데이터 전달을 위해 알아보니 동일하게 사용이 가능해서

사용하는 방법을 알아봅니다.

 

1. Nuget Package 에서 'Prism.Core' 를 설치합니다.

 

2. Program.cs 에서 EventAggregator 를 주입시킵니다.

builder.Services.AddScoped<IEventAggregator, EventAggregator>();

위와 같이 EventAggregator 를 주입시켜 사용 가능한 상태로 만듭니다.

 

3. Event 생성

TestEvent 라는 이벤트 클래스를 정의합니다.

여기에서는 단순히 문자열을 전달하기 위해 PubSubEvent<string>  으로 상속받았습니다.

using Prism.Events;

namespace RadzenControlTest
{
    public class TestEvent : PubSubEvent<string> { }
}

 

4. Publish

데이터를 전달하는 쪽에서 코드는 아래와 같습니다.

@page "/"

@inject NotificationService notificationService

<PageTitle>Home</PageTitle>

<RadzenButton Text="test" Click="@TestClick"/>

@code{

    [Inject]
    private IEventAggregator? ea { get; set; }

    private void TestClick()
    {
        ea?.GetEvent<TestEvent>().Publish("test publish");
    }
}

test publish 메세지를 전달했습니다.

 

5. Subscribe

데이터를 받는쪽에서 코드는 아래와 같습니다.

@inject DialogService dialogService


....

@code {
    [Inject]
    private IEventAggregator? ea { get; set; }

    protected override void OnInitialized()
    {
        base.OnInitialized();

        // TestEvent 구독 처리
        ea?.GetEvent<TestEvent>().Subscribe(TestMethod);
    }

    private void TestMethod(string message)
    {
        dialogService.Confirm(message, "Subscribe Message", new ConfirmOptions() { OkButtonText = "Yes", CancelButtonText = "No" });
    }
}

 

6. 결과

버튼을 클릭하여 publish 하여 메세지를 보내면 subscribe 된 쪽에서 메세지를 받아 처리할 수 있게 됩니다.

위 예제에서는 Radzen 의 DialogService 를 통해 아래와 같은 확인창을 띄웁니다.

 

728x90

공유하기

facebook twitter kakaoTalk kakaostory naver band