簡體   English   中英

棱鏡請求導航到新視圖

[英]Prism RequestNavigate to new view

我正在使用WPF Prism 6autofac ,並且在視圖之間導航時遇到問題。 我所擁有的是一個視圖,我只想在離開它之前保持活力,下次導航到它時,我想創建這個視圖的新版本。

在加載時,我注冊了一個具有以下代碼的IModule

_regionManager.RegisterViewWithRegion(RegionNames.MainRegion, 
                                      typeof(DxfDisplay.Views.DxfDisplay));

這注冊了我的視圖並且系統在初始加載時工作,我在視圖 model 上實現了INavigationAwareIRegionMemberLifetime接口,並且有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.

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