WinRT和MVVM Light V5 NavigationService

时间:2014-11-10 19:10:45

标签: c# windows-runtime mvvm-light

我正在使用MVVM Light V5开发WinRT应用程序。我想从一个页面导航到另一个页面,并传递一个对象。我有一个GridView,我想抓住点击的项目,所以我创建了一个RelayCommand,它执行此操作:

private void ItemClickExecute(ItemClickEventArgs e)
    {
        navigationService.NavigateTo("AnotherPage", e.ClickedItem as MyObject);           
    }

这很好用。我的问题是从“AnotherPage”ViewModel获取此对象。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

对不起,我对这个答案迟到了,但希望这有帮助。

您应该为要导航到的页面创建一个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)的答案,但这对我有用。