2015-11-16 30 views
0

我的應用程序有一個菜單,內容區域和狀態欄。用戶可以選擇文件 - >數據庫,在新窗口中提示用戶輸入數據庫參數(服務器和端口)。當用戶點擊「確定」按鈕時,我們需要用新的連接更新狀態欄。如何在新窗口中提示用戶輸入

我知道菜單項視圖應該綁定到視圖模型中的命令,但我該如何去顯示窗口?在視圖模型中創建它似乎是錯誤的。在事件聚合器上發佈事件似乎放棄了很多控制。

使用事件聚合器更新狀態欄對我來說意義重大,因爲應用程序的許多不同部分可能會關心數據庫更改。

注:我使用棱鏡

+0

自從GUI開始以來,所有對話框窗口都出現後,你會認爲應該做的很簡單。但是,對於WPF和MVVM來說,這並不是微不足道的......長話短說,爲了維護MVVM的「純潔性」,ViewModel無法知道像對話那樣的'骯髒'的東西(喘氣!UI問題!)。因此,您必須創建一個Dialog Service,其中視圖模型被引用(儘管DI),視圖模型使用該服務來說'我需要顯示一個對話框'。請參閱http://stackoverflow.com/questions/21301981/the-pretty-way-to-make-a-modal-dialog-in-wpf-with-prism-and-mvvm-pattern – user469104

回答

0

如果你使用棱鏡(我相信你是正弦億郵中使用的棱鏡標籤),並只需要簡單的捕捉值,那麼你可以使用PopupWindowAction。

https://github.com/PrismLibrary/Prism/blob/master/Documentation/WPF/45-AdvancedMVVMScenarios.md#using-interaction-request-objects

否則一個對話框,服務也將工作。

+0

您如何看待使用事件聚合器而不是創建單獨的對話服務?如果我們必須發生很多可能無法維護的事件,那麼我們可以做一些過濾。另一個想法是有一個應用程序和模塊特定的事件聚合器。 我們的一些對話很簡單,但其他對話很複雜。 想法? – justin15

+0

沒辦法! EventAggreagtor用於發佈消息,不顯示對話框。 –

相關問題