WPF, как Prism связывает представления и URI

#c# #wpf #prism

#c# #wpf #prism

Вопрос:

Я изучаю Prism и не понимаю, как осуществляется навигация с помощью URI. В этом примере с документацией код на github использует:

 private void Button_Click(object sender, RoutedEventArgs e)
{            
    this.regionManager.RequestNavigate(RegionNames.MainContentRegion, calendarViewUri);
}
  

URI объявляется следующим образом:

 private static Uri calendarViewUri = new Uri("CalendarView", UriKind.Relative);
  

В коде объявлен CalendarView.xaml, но как создается ссылка?
Prism просто смотрит на URI и пытается найти подходящее имя представления, а затем загрузить его в регион?

Если мое предположение верно, нет необходимости регистрировать ссылку между URI и представлением. Но что, если представление переименовано, это означает, что навигация будет нарушена, я прав?

Ответ №1:

Что касается «недостающей ссылки», посмотрите на ViewSwitchingNavigation.Calendar/CalendarModule.cs , это то место, где инициализируется модуль calendar, то есть где все его содержимое становится известным остальной части приложения:

 this.unityContainer.RegisterTypeForNavigation<CalendarView>();
  

В основном здесь говорится: «когда вас попросят перейти к «CalendarView», создайте экземпляр CalendarView «.