簡體   English   中英

如何在RegionManager中的用戶控件或控件模板中注冊區域?

[英]How to register regions inside user controls or control templates in RegionManager?

我正在使用IRegionManager加載並導航到視圖,我在將內容加載到引導視圖中已加載的主視圖中的主區域中沒有問題,但是無法將內容加載到加載的視圖中的區域中,區域管理器似乎沒有注冊這些區域。

我的引導程序類:

protected override DependencyObject CreateShell()
{
    return this.Container.Resolve<MainWindowView>();
}

protected override void InitializeShell()
{
    Application.Current.MainWindow.Show();
}

protected override void ConfigureContainer()
{
    base.ConfigureContainer();

    this.Container.RegisterTypeForNavigation<DocumentView>();
    this.Container.RegisterTypeForNavigation<EmailView>();
    this.Container.RegisterTypeForNavigation<WorkTypeSelectionView>();
}

DocumentView是具有另一個區域的用戶控制,觸發命令時運行的方法是這樣的:

private void ViewEmailAction()
{
    NavigationParameters parameters;
    parameters = new NavigationParameters();
    parameters.Add(nameof(this.CurrentEmail), this.CurrentEmail);
    this.regionManager.Regions[this.EmailRegion].RequestNavigate(nameof(EmailView), parameters);
}

消息"The region manager does not contain the EmailRegion region."會引發異常"The region manager does not contain the EmailRegion region."

提前致謝!

這里有兩種不同的情況:

UserControls:這應該不會出現任何問題。 您可能試圖導航到尚未加載的View中定義的區域。 確保在加載后導航到某個區域。 在ViewModel構造函數內部導航是此問題的最大來源之一。 如果您想將示例發布到GitHub,我可以看看。

ControlTemplates:這是Prism中的一個已知問題。 這是您的解決方法:

http://southworks.com/blog/2011/11/10/regions-inside-datatemplates-in-prism-v4-using-a-region-behavior/

暫無
暫無

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

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