2016-08-24 4 views
0

Ich bin neu mit Template10, und ich versuche, eine Methode zum Navigieren zwischen den Seiten zu erstellen, aber in Template10 funktioniert der NavigationService nur auf keine statischen Methoden, wie ist der beste Weg, den NavigationService zu verwenden Vorlage10.UWP Template10 NavigationService in einer statischen Methode

Hier ist mein Code, wie Sie es sehen können, zeigen Fehler, wenn statische Wort entfernt wird, gibt es keine Fehler, aber dann konnte ich nicht in anderen Seiten verwenden.

using Template10.Mvvm; 

namespace Project 
{ 
    class NavigationUniversalService : ViewModelBase 
    {  
     public static void ToCover() 
     { 
      NavigationService.Navigate(typeof(Views.Page_Cover)); 
     }  
    } 
} 

Jede Hilfe wird geschätzt.

Antwort

2

aber dann konnte ich nicht auf anderen Seiten verwenden.

Sie können diese Methode auf anderen Seiten verwenden, indem Sie eine neue Instanz Ihrer NavigationUniversalService erstellen.

Zum Beispiel in meinem MainPageViewModel verwendete ich NavigationService wie folgt aus:

public void ToCover() 
{ 
    App.Current.NavigationService.Navigate(typeof(Views.Page_Cover)); 
} 

Dann in anderen Seite Ansichtsmodell, können Sie diese Methode wie folgt aufrufen:

MainPageViewModel mainviewmodel = new MainPageViewModel(); 
mainviewmodel.ToCover(); 

Problem ist, wenn Sie wollen Um durch NavigationService zu navigieren, können Sie Ihre Klasse von ViewModelBase erben, dann können Sie direkt NavigationService verwenden, um zu navigieren, es gibt keine Notwendigkeit, dieses NavigationService von anderer Klasse zu nennen.

Was ich meine ist, zum Beispiel wie folgt aus:

public class DetailPageViewModel : ViewModelBase 
{ 
    public DetailPageViewModel() 
    { 
     if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) 
     { 
      Value = "Designtime value"; 
     } 
    } 
    ... 
    public void CallMethodInOtherViewModel() 
    { 
     NavigationService.Navigate(typeof(typeof(Views.Page_Cover)); //here! 
    } 
} 
Verwandte Themen