在Xamarin.Forms中的MVVM Light中的ViewModel上导航

时间:2016-07-26 13:05:36

标签: xamarin mvvm-light

我在MVVM Light中有一个Xamarin.froms应用程序,我想在按钮点击时打开另一个页面,但我只想使用Page class

这个方法
page.Navigation.PushModalAsync(new MyPage())  

如何发送" Page" class作为ViewModel类的参考。

2 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点。

简单方法:

  • 将Page作为View Model的构造函数参数传递。

有用的方式:

  • 编写导航服务。这可以从内容页面扩展,如下所示:

    public class NavigationService : ContentPage
    {
            public static INavigation Navigation
            {
                get {
                    return Application.Current.MainPage.Navigation;
                }
            }
    
            public static IReadOnlyList<Page> NavigationStack () {
                    return Navigation.NavigationStack;
            }
    }
    

现在,您可以在ViewModel中使用此服务,如下所示:

Page lastPage = Navigation.NavigationStack.Last;

答案 1 :(得分:0)

XAML 代码

<Button Text="Help" Command="{Binding NavigateHelpPage}"/>

Xamarin.forms 中的 MVVM 分层页面导航

public ICommand NavigateHelpPage { get; }
    
private async Task NavigateToHelpPage()
{
    await Application.Current.MainPage.Navigation.PushAsync(new HelpPage());
}

内部构造函数:

NavigateHelpPage = new Command(async () => await NavigateToHelpPage());

MainPage 您可以设置为:

Application.Current.MainPage = new NavigationPage(new Views.Dashboard.DashboardPage());