2017-02-20 9 views
1

Ich habe Xamarin Forms-Anwendung mit MVVM Light. Ich habe Navigation Klasse und registriert es im Konstruktor:MVVM Light - Es ist bereits eine Fabrik für INavigationService registriert

public App() 
    { 
     InitializeComponent(); 

     // Setup navigation service: 
     var navigationService = new NavigationService(); 
     // Configure pages: 
     navigationService.Configure(AppPages.MainPage, typeof(MainPage)); 
     navigationService.Configure(AppPages.DetailsPage, typeof(DetailsPage)); 
     // Register NavigationService in IoC container: 
     SimpleIoc.Default.Register<INavigationService>(() => navigationService); 

     // Create new Navigation Page and set MainPage as its default page: 
     var firstPage = new NavigationPage(new MainPage()); 
     // Set Navigation page as default page for Navigation Service: 
     navigationService.Initialize(firstPage); 
     // You have to also set MainPage property for the app: 
     MainPage = firstPage; 
    } 

Sobald ich die App mit Pfeil zurück auf Android verlassen und wieder öffnen Ich habe Ausnahme:

enter image description here

ich verschiedene Ansätze versucht: Aufheben der Registrierung und den Dienst erneut registrieren oder prüfen, ob der Dienst bereits registriert ist, aber es gibt immer noch einige Probleme. Ich wäre dankbar für Hilfe.

Antwort

0

Es sollte wie unten sein - es funktioniert jetzt korrekt:

public App() 
    { 
     InitializeComponent(); 

     INavigationService navigationService; 

     if (!SimpleIoc.Default.IsRegistered<INavigationService>()) 
     { 
      // Setup navigation service: 
      navigationService = new NavigationService(); 

      // Configure pages: 
      navigationService.Configure(AppPages.MainPage, typeof(MainPage)); 
      navigationService.Configure(AppPages.DetailsPage, typeof(DetailsPage)); 

      // Register NavigationService in IoC container: 
      SimpleIoc.Default.Register<INavigationService>(() => navigationService); 
     } 

     else 
      navigationService = SimpleIoc.Default.GetInstance<INavigationService>(); 

     // Create new Navigation Page and set MainPage as its default page: 
     var firstPage = new NavigationPage(new MainPage()); 
     // Set Navigation page as default page for Navigation Service: 
     navigationService.Initialize(firstPage); 
     // You have to also set MainPage property for the app: 
     MainPage = firstPage; 
    } 

Denken Sie daran, unten Methoden hinzufügen Schnittstelle INavigationService:

void Configure(AppPages pageKey, Type pageType); 
void Initialize(NavigationPage page); 
Verwandte Themen