WinRT和MVVM Light V5导航服务
本文关键字:导航 服务 V5 Light MVVM WinRT | 更新日期: 2023-09-27 18:29:51
我正在使用MVVM Light V5开发一个WinRT应用程序。我想从一个页面导航到另一个页面,并传递一个对象。我有一个GridView,我想捕捉点击的项目,所以我创建了一个RelayCommand,它可以这样做:
private void ItemClickExecute(ItemClickEventArgs e)
{
navigationService.NavigateTo("AnotherPage", e.ClickedItem as MyObject);
}
这很好用。我的问题是从"AnotherPage"ViewModel中获取此对象。我该怎么做?
很抱歉我来晚了,但希望这能有所帮助。
您应该为要导航到的页面创建一个ViewModel,并将其设置为其DataContext。然后在该视图模型中创建一个MyObject属性。
之后,覆盖要导航到的页面的OnNavigatedTo事件。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
var vm = (SecondPageViewModel)this.DataContext;
if (vm!=null)
{
var temp = e.Parameter as MyObject;
if (temp != null)
{
vm.MyObjectProperty = temp;
}
}
}
这样就可以了。
还有其他更复杂(更符合mvvm)的答案,但这对我来说很有效