Thank you for providing the repro sample. The issue you're experiencing is because you're registering your first view (the
SearchAnimalsView) using View Discovery (that is, using the
This is explained on the following note from the
Navigation Chapter of the Prism MSDN documentation:
"The navigation journal can only be used for region-based navigation operations that are coordinated by the region navigation service. If you use view discovery or view injection to implement navigation within a region, the navigation journal will
not be updated during navigation and cannot be used to navigate forward or backward within that region."
In order to fix this behavior, I've replaced this line in your ModuleInit class:
_regionManager.RegisterViewWithRegion(RegionNames.MainContentRegion, () => _container.Resolve<ViewSearchAnimals>());
by the following lines:
That way, when your first view (the SearchAnimalsView) is loaded on application start-up (by being navigated to), a
RegionNavigationJournalEntry is recorded in the RegionNavigationJournal, which indicates that it is the current entry in your navigation journal. So, when you navigate to the second view (the
AnimalProfileView), the RecordNavigation method will push the current entry to the
backStack, thus making the CanGoBack property return true.
Below you can see the RegionNavigationJournal.RecordNavigation method and
RegionNavigationJournal.CanGoBack property to illustrate this:
public void RecordNavigation(IRegionNavigationJournalEntry entry)
if (this.CurrentEntry != null)
this.CurrentEntry = entry;
public bool CanGoBack
return this.backStack.Count > 0;
I hope you find this helpful.
Guido Leandro Maliandi