Sử dụng EventAggregator trong WPF

1. EventAggregator là gì

Để hiểu được Event aggregator trước tiên cần có kiến thức về mô hình MVVM. Tham khảo tại đây https://viblo.asia/p/co-ban-ve-mvvm-model-view-viewmodel-pattern-Do754wdWlM6

Khi dùng mô hình MVVM ta có thể chia xử lý viewmodel cho từng thành phần view ví dụ phần view Header sẽ dc xử lý trong file HeaderViewModel phần view chính Main sẽ có file MainViewModel xử lý. Việc chia này giúp cho code dễ dàng maintain và dễ đọc hơn tuy nhiên 1 vấn đề là có những lúc xử lý trên viewmodel của phần Main cần kích hoạt xử lý ở viewmodel của Header.

Đó là lúc ta cần EventAggegator. EventAggegator giúp giao tiếp giữa 2 view model bất kỳ (Có thể pass cả dữ liệu giữa 2 view model) 1 cách dễ dàng.

Cách xử lý của EventAggegator như ảnh dưới đây

Ví dụ tại HeaderViewModel ta định nghĩa 1 xử lý thay đổi màu của background và Subscriber xử lý đó với EventAggregator.

Sau đó trong MainViewModel khi cần chạy xử lý trên HeaderViewModel ta chỉ cần Publisher với chữ ký (xem ví dụ) giống với chữ ký của xử lý mà HeaderViewModel đã subscriber.

2. Ví dụ

Tạo 1 class BackgroundColor.cs làm chữ ký (dùng để trao đổi dữ liệu giữa 2 model)

Subscriber xử lý trong HeaderViewModel.cs

Trong MainViewModel.cs publisher event

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *