【问题标题】:WinRT and MVVM Light V5 NavigationServiceWinRT 和 MVVM Light V5 导航服务
【发布时间】:2014-11-10 19:10:44
【问题描述】:

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

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

这工作正常。我的问题是从“AnotherPage”ViewModel 中获取这个对象。我该怎么做?

【问题讨论】:

    标签: c# windows-runtime mvvm-light


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多