Parameters 如何在带有MVVMLight的通用应用程序Windows 8.1/WP 8.1上使用参数导航
我用MVVMLight开发了一个通用应用程序Windows 8.1/Windows Phone 8.1。 我想知道实现页面间导航的最佳实践是什么。Parameters 如何在带有MVVMLight的通用应用程序Windows 8.1/WP 8.1上使用参数导航,parameters,navigation,mvvm-light,win-universal-app,Parameters,Navigation,Mvvm Light,Win Universal App,我用MVVMLight开发了一个通用应用程序Windows 8.1/Windows Phone 8.1。 我想知道实现页面间导航的最佳实践是什么。 有以下几页: 主页:是一个登录页面 主页:是一个中心,有不同的部分“主题列表”、“联系人列表”、“用户详细信息” ListArticlesFromTheme:所选主题的文章列表 DetailsContact:所选联系人的详细信息 details文章:所选文章的详细信息 我需要通过从一个页面导航到另一个页面来传递参数:所选主题、所选联系人、所选文章
有以下几页:
- 主页:是一个登录页面
- 主页:是一个中心,有不同的部分“主题列表”、“联系人列表”、“用户详细信息”
- ListArticlesFromTheme:所选主题的文章列表
- DetailsContact:所选联系人的详细信息
- details文章:所选文章的详细信息
我找到了导航tavers MVVMLight v5的示例实现,但没有参数:
我找到了另一个带有参数的示例,但我还没有实现它:
- 通过视图还是视图模型管理导航更好?
- 是否有更详细的示例显示带参数的导航?
- 访问在NavigationServiceEx.Navigate方法中传递的参数
- 当页面被导航到时,在ViewModel中调用方法
public interface INavigable
{
Task OnNavigatedToAsync(object parameter, NavigationMode mode);
void OnNavigatingFrom(NavigatingCancelEventArgs e);
void OnNavigatedFrom();
}
在NavigationServicesEx类中添加Frame.Navigating事件的处理程序(带有一些附加管道,请参阅博客),然后在ViewModels中实现不可用的接口
然后,您将能够访问在导航调用中传递的参数:
NavigationServiceEx.Navigate(typeof(DestinationPage).FullName, yourParameter);
在ViewModel中实现的OnNavigatedToAsync方法中:
public Task OnNavigatedToAsync(object parameter, NavigationMode mode)
{
if (parameter != null)
{
YourThing thing = parameter as YourThing;
this.UseYourThing(thing);
}
return Task.CompletedTask;
}
编辑:哦,在ViewModel中导航。您可以在VM中调用一个方法,该方法通过命令或视图的代码隐藏来处理导航