簡體   English   中英

使用 Prism 導航時如何處理視圖?

[英]How can I dispose a view when navigating away with Prism?

我正在試驗 Prism 並創建了一個簡單的應用程序,它由一個帶有 Prism 區域的主窗口以及兩個“子”視圖(和 VM)組成。 這些子視圖中的每一個都有一個按鈕,單擊它可以導航到另一個視圖,例如:

_regionManager.RequestNavigate("MainWindowRegion", "HomeView");

子視圖和視圖模型實現了IDisposable ,並且在我的 DI 容器中被賦予了“瞬態”生命周期。 此外,視圖實現了IRegionMemberLifetime (KeepAlive = false)。

盡管如此,視圖並沒有得到處理(直到我關閉應用程序)。 我錯過了什么? 當我離開視圖時如何處理視圖?

或者將子視圖注冊為單例並在我導航到它們時初始化它們會更簡單嗎?

如果您希望 IDisposable 方法被觸發,而這正是您用來確定您的視圖是否被“處理”的方法,那么您就做錯了。 這不是它的工作原理。 GC 將在准備就緒時執行其工作。 如果您正在使用 IRegionMemberLifetime,那么您正在做您需要做的事情,以便從區域中刪除視圖並使其可用於 GC。 您需要對 IDisposable 及其在 WPF 中的工作方式進行一些研究。

您需要將 IDestructible 從 Prism.Navigation 實現到您的視圖模型,如本文底部所述:

https://prismlibrary.com/docs/xamarin-forms/creating-your-first-prism-app.html

當用戶離開時,這將在您的視圖模型中調用public void Destroy()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM