【发布时间】:2016-07-26 13:05:36
【问题描述】:
我在 MVVM Light 中有一个 Xamarin.froms 应用程序,我想在单击按钮时打开另一个页面,但我只想使用 Page 类的这种方法
page.Navigation.PushModalAsync(new MyPage())
如何发送“Page”类作为 ViewModel 类的参考。
【问题讨论】:
标签: xamarin mvvm-light
我在 MVVM Light 中有一个 Xamarin.froms 应用程序,我想在单击按钮时打开另一个页面,但我只想使用 Page 类的这种方法
page.Navigation.PushModalAsync(new MyPage())
如何发送“Page”类作为 ViewModel 类的参考。
【问题讨论】:
标签: xamarin mvvm-light
有多种方法可以做到这一点。
简单的方法:
有用的方法:
编写一个导航服务。这可以从这样的内容页面扩展:
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;
【讨论】:
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());
【讨论】: