The Route property in the Flyout seems to be the issue. Hopefully somebody who knows a lot more about it will explain in the comments? ;)
<FlyoutItem FlyoutDisplayOptions="AsMultipleItems">
<ShellContent
Title="Page 1"
Icon="one_icon.png"
ContentTemplate="{DataTemplate local:OnePage}"
** Route="OnePage" /> <!-- << I believe this is the fault--> **
<ShellContent
Title="Page 2"
Icon="two_icon.png"
ContentTemplate="{DataTemplate local:TwoPage}"
** Route="TwoPage" /> <!-- << Delete this --> **
<ShellContent
Title="Page 3"
Icon="three_icon.png"
ContentTemplate="{DataTemplate local:ThreePage}"
IsVisible="true"
** Route="ThreePage" /> <!-- << Delete this --> **
</FlyoutItem>