Как получить текущий активный вид в регионе, используя PRISM? - PullRequest
15 голосов
/ 15 июня 2011

Я знаю, что могу получить все зарегистрированные просмотры в регионе с помощью:

var vs = mRegionManager.Regions[RegionNames.MainRegionStatic].Views.ToList();

и я вижу, что есть следующий код:

mRegionManager.Regions[RegionNames.MainRegionStatic].ActiveViews

, который дает список Active View, но у меня есть регион, связанный с ContentControl, который всегда имеет один ActiveView. Я неправильно понял или есть способ получить единый активный вид?

Ответы [ 3 ]

12 голосов
/ 15 июня 2011

var singleView = regionManager.Regions["MyRegion"].ActiveViews.FirstOrDefault();

5 голосов
/ 05 декабря 2011
var singleView = regionManager.Regions["MyRegion"].ActiveViews.FirstOrDefault();

Это не правильно, так как оно просто выведет любой вид, который был активирован первым.не активный в настоящее время / видимый вид.

Не могу найти прямого решения, которое не включает пользовательскую реализацию в View или ViewModel.

1 голос
/ 05 июня 2018

Ну, вы можете использовать NavigationService Journal.Требуется запись всей навигации, которая происходит в вашем приложении.Таким образом, вы можете получить имя представления следующим образом:

string name = mRegionManager.Regions[RegionNames.MainRegionStatic].NavigationService.Journal.CurrentEntry.Uri;

Тогда вы можете получить представление следующим образом:

mRegionManager.Regions[RegionNames.MainRegionStatic].GetView(name);

Sweet Right?:)

...