Xamarin Forms Navigation: Part 1 – Navigation is HARD!

Navigation patterns in a cross-platform environment is difficult because the heuristics of each platform are simply not the same. When trying to achieve a single-implementation for all platforms, you end up being in a bit of a conundrum.

The Xamarin.Forms page navigation experience is somewhat limited, though I think that is because of the hindrance of trying to be all things to all platforms. Hierarchical navigation between pages, using the NavigationPage, seems to be fairly common and I didn’t have much issue with settling on it as a mechanism to navigate from summary to detailed views of data but that didn’t resolve the question of how I would like people to be able to navigate the different aspects of the application.

At first I was excited to use MasterDetail Page Navigation Recipe but it didn’t allow me to adhere to a strict MVVM pattern straight out of the box. Upon further investigation I found that the common term for this navigation pattern is a “Hamburger Menu”, and it has quite a history. Due to its history, there has been a lot of discussion about the problems with it (Louie A. has a fantastic synopsis here). I believe that Carousel also suffers from a lack of discoverability so that left me with deciding on the NavigationPage and TabbedPage which can be used together.

Here we go…

Advertisements

2 thoughts on “Xamarin Forms Navigation: Part 1 – Navigation is HARD!

  1. […] Part 1 I discussed that I had settled on using the TabbedPage for navigation within my application. Like […]

  2. […] that they’d prefer something more akin to the MasterDetailPage (which I had started with in Part 1). This led me to work on MVVM-ing the MasterDetailPage for use with the same ViewModel I used for […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s