Navigationsstrul och lösningar på detta

En del av de problem vi har tampats med handlar om just navigering och hur man gör det i samband med att man använder en MasterDetailPage.

Ett problem var att sidobaren där viss navigering till andra sidor sker inte försvann när man ville komma till en sida i den, detta löstes med att använda IMasterDetailPageOptions och sätta dess property IsPresentedAfterNavigation till false.

Ytterliggare ett problem vi haft var att när man var inne i en sådan sida från sidobaren så gick det inte att använda tillbakaknappen på android för att gå tillbaka, då stängdes appen ner. Det fanns även ingen tillbaka knapp i navigationsbaren. Detta löstes genom att skapa en customnavigationpage som använder INavigationPageOptions och sätta propertyn ClearNavigationStackOnNavigation till false. Vi ändrade även på navigationspathen från InfoPage  till CustomNavigationPage/InfoPage”.

Kodexempel 

Navigationsklassen

public class CustomNavigationPageViewModel : ViewModelBase, INavigationPageOptions public class CustomNavigationPageViewModel : ViewModelBase, INavigationPageOptions

{

public CustomNavigationPageViewModel(INavigationService navigationService) : base(navigationService)
{                    }
public bool ClearNavigationStackOnNavigation
{            get { return false; }        }
}

Ändringarna i MasterDetailPage
private async void NavigateToInfoPage()
{
await NavigationService.NavigateAsync("InfoPage");
}

till

private async void NavigateToInfoPage()
{
await NavigationService.NavigateAsync("CustomNavigationPage/InfoPage");
}

<em>IMasterDetailPageOptions</em>

public class MainMasterDetailPageViewModel : ViewModelBase, IMasterDetailPageOptions

Tillhörande prop som nu gör att baren inte syns när man navigerat till den nya sidan

public bool IsPresentedAfterNavigation
{
get { return false; }
}

Leave a comment