2016-10-31 5 views
0

Ich würde gerne wissen, wie ich eine spezifische Registerkarte von meinem TabbedNavigationContainer mit einem ToolBarItem klicken kann. Ich habe eine BaseContentPage BasisklasseNavigieren zu einem TabbedPage mit einem ToolBarItem mit FreshMvvm

public class BaseContentPage : ContentPage, IPage 
{ 
    public BaseContentPage() 
    { 
     ToolbarItems.Add(new ToolbarItem("Main Page", null,() => 
     { 
      //Application.Current.MainPage = ??; 
     })); 
    } 
} 

, von dem alle Seiten aus abzuleiten.

public class App : Application 
{ 
    public App() 
    { 
     Registrations(); 
     InitializeGui(); 
    } 

    private void Registrations() 
    { 
     //FreshIOC.Container.Register<IFreshNavigationService 
    } 

    private void InitializeGui() 
    { 
     var tabbedNavigationContainer = new FreshTabbedNavigationContainer(); 
     tabbedNavigationContainer.AddTab<MapPageModel>("Map", "icon.png"); 
     tabbedNavigationContainer.AddTab<HistoryPageModel>("History", "icon.png"); 
     MainPage = tabbedNavigationContainer; 
    } 
} 

Dies öffnet meine Ansicht und ich kann meine Anwendung mit Registerkarten sehen. Meine Frage ist, wie kann ich die Map Seite auswählen, wenn die ToolbarItem "Main Page" angeklickt wird?

Ich bin mir bewusst, dass ich meinen eigenen grundlegenden Navigationsservice schreiben könnte, in dem App eingespritzt wird, aber dieses scheint, dass ich nicht das volle Potential von FreshMvvm verwende?

Danke für Ihre Zeit.

Antwort

0

Ich bin mir nicht ganz sicher über die Struktur Ihres Projekts, aber ich denke, dass Sie versuchen, die Navigation zum Code-hinter Ihrer tatsächlichen Seite hinzuzufügen, richtig? Obwohl Sie dies tun können, ist es etwas gegen das MVVM-Prinzip. Wenn Sie noch tun wollen würde, dass Sie wahrscheinlich etwas zu tun haben:

FreshIOC.Container.Resolve<IFreshNavigationService>().PushPage (FreshPageModelResolver.ResolvePageModel<MainPageModel>(null), null);

Obwohl es funktionieren sollte, ist es nicht der beste Weg ist.

Sie sollten die Command Eigenschaft Ihrer ToolBarItem zuweisen, die bindbar ist und ein PageModel dahinter erstellen, das diesen Befehl implementiert.

ich Sie verwenden XAML zu übernehmen werde, so XAML wird wie folgt aussehen:

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" Title="MyPage"> 
    <ContentPage.ToolbarItems> 
     <ToolbarItem Text="Main Page" Command="{Binding GoToMainPageCommand}" /> 
    </ContentPage.ToolbarItems> 

    <!-- ... Rest of page ... --> 
</ContentPage> 

Jetzt eine PageModel für diese Seite erstellen, die die GoToMainPageCommand implementiert.

public class MyPagePageModel : FreshBasePageModel 
{ 
    public ICommand GoToMainPageCommand { get; private set; } 

    public MyPagePageModel() 
    { 
     GoToMainPageCommand = new Command(GoToPage); 
    } 

    private async void GoToPage() 
    { 
     await CoreMethods.PushPageModel<MainPageModel>(); 
    } 
} 

Jetzt navigieren Sie zu einer echten MVVM-Methode.

Verwandte Themen