前言:最近幾天有好幾個小伙伴玩WPF,遇到不同頁面,不知道要怎麼傳遞消息。於是,我今天就來演示一個事件聚合器的玩法,採用prism框架來實現。作為福利,內容附帶了主頁面打開對話框時候直接通過參數傳遞消息的一個小例子,具體請自行圍觀。 以下內容,創建wpf項目以及引用prism和實現依賴註入等細節,可 ...
前言:最近幾天有好幾個小伙伴玩WPF,遇到不同頁面,不知道要怎麼傳遞消息。於是,我今天就來演示一個事件聚合器的玩法,採用prism框架來實現。作為福利,內容附帶了主頁面打開對話框時候直接通過參數傳遞消息的一個小例子,具體請自行圍觀。
以下內容,創建wpf項目以及引用prism和實現依賴註入等細節,可以參考我的其他文章。因為本文章使用該鏈接的教程的原始demo直接進行添加:
https://mp.weixin.qq.com/s/DHKr68cIMWu0tOrO4RBjXA
在以上原始demo的基礎上(知道prism框架的引用、MVVM的實現,可以無視上面文章教程),我在主頁新建一個按鈕,用來打開對話框使用。












以上內容核心代碼:
1、打開對話框
private void ExecuteOpenDialog()
{
DialogParameters pairs = new DialogParameters();
pairs.Add("message", "這是一個測試消息");
_dialogService.ShowDialog("TestDialog", pairs, (res) => {});
}
2、消息發佈與接收:
//發佈
private void ExcuteSendMessage (){
TestMessage message = new TestMessage();
message.Now = DateTime.Now;
message.Message = this.Message;
_aggregator.GetEvent<TestMessageEvent>().Publish(message);
}
//接收
_aggregator.GetEvent<TestMessageEvent>().Subscribe(GetMessage);
private void GetMessage(TestMessage message)
{
Debug.WriteLine($"{message.Now}>>>>>>{message.Message}");
}
3、對話框參數接收:
public void OnDialogOpened(IDialogParameters parameters)
{
string message = parameters.GetValue<string>("message");
this.Message = message;
}
以上就是該文章的全部內容,如果需要以上demo源碼,可以在我個人公眾號【Dotnet Dancer】後臺回覆"聚合器”即可獲取demo源碼下載鏈接。
歡迎加入QQ群: 群號:1079830632
