Как получить название активного представления в 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 вы можете получить имя активного представления, используя NavigationService
Journal
,
Например:
string name = RegionManager.Regions["MainRegion"].NavigationService.Journal.CurrentEntry.Uri;