WPF 에서 화면 간 데이터 전달을 위해서 Prism 의 EventAggregator 를 사용하였습니다.
Blazor 에서도 화면 간 데이터 전달을 위해 알아보니 동일하게 사용이 가능해서
사용하는 방법을 알아봅니다.
builder.Services.AddScoped<IEventAggregator, EventAggregator>();
위와 같이 EventAggregator 를 주입시켜 사용 가능한 상태로 만듭니다.
TestEvent 라는 이벤트 클래스를 정의합니다.
여기에서는 단순히 문자열을 전달하기 위해 PubSubEvent<string> 으로 상속받았습니다.
using Prism.Events;
namespace RadzenControlTest
{
public class TestEvent : PubSubEvent<string> { }
}
데이터를 전달하는 쪽에서 코드는 아래와 같습니다.
@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 메세지를 전달했습니다.
데이터를 받는쪽에서 코드는 아래와 같습니다.
@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" });
}
}
버튼을 클릭하여 publish 하여 메세지를 보내면 subscribe 된 쪽에서 메세지를 받아 처리할 수 있게 됩니다.
위 예제에서는 Radzen 의 DialogService 를 통해 아래와 같은 확인창을 띄웁니다.
C# Blazor MVVM 패턴 사용하기 (0) | 2024.03.24 |
---|---|
C# Blazor Radzen - Confirm Dialog (확인창) 사용하기 (0) | 2024.03.24 |
C# Blazor Radzen - RadzenTree : 자식노드 없는 경우 확장 아이콘 숨기는 방법 (0) | 2024.03.23 |
C# Blazor RadzenPicker 에서 HEX 값 얻는 방법 (0) | 2024.03.20 |
C# Blazor 에서 js 파일 추가하여 js 파일 내 함수 호출하는 방법 (0) | 2024.03.20 |