[英]Prism RequestNavigate to new view
我正在使用WPF Prism 6
和autofac
,並且在視圖之間導航時遇到問題。 我所擁有的是一個視圖,我只想在離開它之前保持活力,下次導航到它時,我想創建這個視圖的新版本。
在加載時,我注冊了一個具有以下代碼的IModule
_regionManager.RegisterViewWithRegion(RegionNames.MainRegion,
typeof(DxfDisplay.Views.DxfDisplay));
這注冊了我的視圖並且系統在初始加載時工作,我在視圖 model 上實現了INavigationAware
和IRegionMemberLifetime
接口,並且有public bool KeepAlive => false;
實現IRegionMemberLifetime
以便在我完成后處理我的視圖。
當我離開這個視圖時,一切都很好,但是當我嘗試使用導航導航到視圖時
_regionManager.RequestNavigate(RegionNames.MainRegion,
new Uri("DxfDisplay", UriKind.Relative), parameters);
視圖未打開,視圖 model 構造函數未調用。 為了使導航正常工作,我需要再次注冊該區域的視圖。 或者,如果我將 KeepAlive 更改為true
,我可以導航回原始視圖,但如果INavigationAware.IsNavigationTarget
返回 false,我將無法生成新視圖。
我的問題是如何向區域管理器注冊視圖,這樣當我調用_regionManager.RequestNavigate
時,它將創建視圖的新實例並顯示它。 我覺得我錯過了一些簡單的東西,只是忽略了它。
_builder.RegisterTypeForNavigation<DxfDisplay.Views.DxfDisplay>();
在 Prism 7 中,這現在稱為RegisterForNavigation<T>()
並且存在於IContainerRegistry
接口上。
例如,在您的模塊中:
public class MyModule : IModule
{
public void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<MyView>();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.