Dragos Dragos - 1 month ago 12
C# Question

Xamarin.Forms Navigate to another page using ViewModel

I have several ContentPages and I want to navigate from one to another at the click of an element in the page. I have my ViewModel class:

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;
}
}


And this is one of my pages( for the sake of space, i put only the relevant code):

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);
}));


I want when I click the image, to execute the Command in the JumpVM class and navigate to the page there. How can I do that?

Answer

Try adding the following line after the FadeTo line: ((JumpVM)BindingContext).NewPage.Execute(null).

Comments