2015-02-26 6 views
7

Ho diverse pagine di contenuto e voglio spostarmi da uno all'altro al clic di un elemento nella pagina. Io ho la mia classe ViewModel:Xamarin.Forms Passare a un'altra pagina utilizzando ViewModel

class JumpVM : INotifyPropertyChanged 
    { 
     public event PropertyChangedEventHandler PropertyChanged; 
     private INavigation _navigation; 

     public ICommand NewPage 
     { 
      get 
      { 
       return new Command(async() => 
       { 
        await _navigation.PushAsync(new MySettingsPage()); 
       }); 
      } 
     } 

     public JumpVM() { } 

     public JumpVM(INavigation navitation) 
     { 
      _navigation = navitation; 
     } 
    } 

e questa è una delle mie pagine (per il gusto di spazio, ho messo solo il codice di riferimento):

BindingContext = new JumpVM(this.Navigation); 

....

Image fbInvite = new Image 
      { 
       Source = ImageSource.FromResource(Constants.ASSETLOCATION + ".facebookInviteIcon.png"), 
       HorizontalOptions = LayoutOptions.Center 
      }; 
      fbInvite.GestureRecognizers.Add(new TapGestureRecognizer(sender => 
       { 
        //navigation in the method below 
        FaceboonInviteFriends(); 
        fbInvite.Opacity = 0.8; 
        fbInvite.FadeTo(1); 
       })); 

Voglio quando faccio clic sull'immagine, per eseguire il comando nella classe JumpVM e navigare verso la pagina lì. Come lo posso fare?

risposta

1

Provare ad aggiungere la riga seguente dopo la riga FadeTo: ((JumpVM)BindingContext).NewPage.Execute(null).

+0

In realtà, risponde. Aggiungerò solo un piccolo suggerimento alla mia risposta. –

+0

Grazie :) Questo ha aiutato. Segnalo come risposta, ma se puoi aiutarmi con un'altra cosa legata a questo, sarebbe bello. Come puoi vedere, ho programmato con difficoltà dove sarebbe saltato "attendi _navigation.PushAsync (new MySettingsPage());" . Ma per maggiore flessibilità, posso inserire una determinata pagina in base a quale pulsante clicco? – Dragos

+0

Certo, puoi creare qualsiasi pagina che desideri e usarla come parametro. –

4

Questa è la risposta per la navigazione di una pagina in un'altra pagina nel concetto di ViewModel.

public ICommand NavigationList { get; set; } 

NavigationList = new Command(GetListview); 

public void GetListview() 
{ 
    Xamarin.Forms.Application.Current.MainPage.Navigation.PushAsync(new ListViewPerson()); 
}