Как получить название активного представления в PRISM

Я пытаюсь перейти к тому же представлению (так же, как к активному), но с новыми параметрами. Проблема в том, что я изо всех сил пытаюсь найти чистый способ получить имя текущего активного представления из RegionManager.

2 ответа

Решение

Насколько я понимаю, я бы порекомендовал реализовать интерфейс для каждого из ваших видов, который предоставляет необходимую информацию для определения того, какой это вид, а затем использовать 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;
    }
}

Я не уверен, реализован ли этот метод в Prism 4. Но в Prism 6 вы можете получить имя активного представления, используя NavigationServiceJournal,

Например:

string name = RegionManager.Regions["MainRegion"].NavigationService.Journal.CurrentEntry.Uri;
Другие вопросы по тегам