關於MVVM中對話窗口的最佳實踐(對WPF)有什麼共識嗎?我已經看到了通過兩種方式走近:我應該如何從我的ViewModels生成對話框?
調解員(EventAggregator,EventBus,或任何你喜歡稱呼它)是發送「RequestsDialog」消息,並等待一個「DialogProcessed」消息。
在視圖xaml本身中聲明的對話框,它綁定到調用者的視圖模型並通過Command或EventTrigger或類似的東西顯示。
我想弄清楚哪個是更好的方法,我需要一些幫助。
我對#1的關注是(並且總是),控制請求和回覆消息範圍的最佳方法是什麼?我的意思是,假設我有中介處理「本地」消息和「全局」應用程序消息......我如何確保我的ViewModel仍然可以接收全局消息......但同時另一個ViewModel在當前窗口上不會意外收到用於活動ViewModel的DialogProcessed消息。
採取以下情形:
- 1窗口
- 2用戶控件,每個結合到獨立的ViewModels
- ViewModel1發送RequestConfirmation消息,並等待一個ConfirmationResponse消息
- 我也有全球性的消息在ViewModel1中接收(如RequestCloseWindow消息)。
如何阻止ViewModel2獲取由ViewModel1啓動的RequestConfirmation消息的ConfirmationResponse消息?
而在響應的evt.Source中,觸發「響應」事件的人將來自「請求」事件的原始源傳遞給響應? – Jeff
@ JeffN825當然,這是一個辦法 – Rachel