0

我正在尝试导航到相同的视图(与活动视图相同),但使用了新参数。问题是我很难找到一种干净的方法来从 RegionManager 获取当前活动视图的名称

4

2 回答 2

4

根据我的理解,我建议在您的每个视图上实现一个接口,该接口提供必要的信息来确定它是哪个视图,然后使用 的ActiveViews属性IRegion来访问活动视图。

就像是:

//Interface for identifying the Views
public interface IApplicationView
{
    string ViewName { get; }
}

//Example of a View with logic to determine which instance of the View it is
public class ApplicationView : UserControl, IApplicationView
{
    public string ViewName 
    { 
        get { return this.isViewA ? return "ViewA" : return "ViewB"; } 
    }
}

//Example of determining which view
public class OtherComponent
{
    public string GetActiveViewName(IRegion region)
    {
        IApplicationView activeView = region.ActiveViews.FirstOrDefault() as IApplicationView;
        return activeView == null ? string.Empty : activeView.ViewName;
    }
}
于 2013-09-09T14:44:16.157 回答
1

我不确定此方法是否在 Prism 4 中实现。但在 Prism 6 中,您可以使用NavigationService Journal.

例如:

string name = RegionManager.Regions["MainRegion"].NavigationService.Journal.CurrentEntry.Uri;
于 2018-06-05T16:32:07.857 回答