2015-10-12 28 views
0

我有一個場景,在一個窗口中註冊了多個視圖,同時一個視圖處於活動狀態。CompositeCommand觸發時提升InteractionRequests(WPF/PRISM)

當窗口關閉時,我正在使用CompositeCommand來驗證close是否可以發生,每個視圖都使用該組合命令註冊一個命令。

複合命令按預期工作,但我的問題是,某些視圖需要引發交互請求,以允許用戶確認他們希望窗口關閉而不修復這些視圖上的驗證問題。

爲此,一些視圖具有交互請求,當它們的命令觸發並且需要用戶確認時,它們會觸發它們。

我遇到的問題是,如果視圖不是當前活動的視圖,那麼交互請求無法觸發,因爲Raised事件變爲null或「This Visual未連接到PresentationSource」的異常是拋出。

我試圖實現想要引發交互請求的視圖的激活,但由於複合命令正在同步執行,視圖無法在交互請求觸發前被激活。

我會去實現這個錯誤嗎?或者有沒有辦法讓交互請求不會拋出?

謝謝!

回答

3

我想說這是InteractionRequest不適合工作的地方之一。它有一個隱含的假設,即對於當前呈現的視圖,它是一個交互。對於您所描述的內容,我通常擁有一個應用級別的DialogService,可以向用戶呈現某種對話框,而不管當前屏幕上顯示的是什麼視圖。 ViewModels或其他服務可以注入一個接口引用並隨時顯示對話框。

該服務的實現可以在shell級別使用InteractionRequest本身,但隨後可能會遇到放置問題,具體取決於您希望如何顯示該對話框。所以我經常會讓這個服務自己的窗口作爲對話框的框架,並且通過界面傳遞內容。

希望有所幫助。

+0

這正是我需要做的。謝謝。 – WillEllis