win8 页面之间传递数据
private void itemView_ItemClick(object sender, ItemClickEventArgs e) { // Navigate to the split page, configuring the new page // by passing the clicked item (FeedItem) as a navigation parameter this.Frame.Navigate(typeof(SplitPage), e.ClickedItem); }
若要在页面之间导航,你可以使用 Frame 控件的 Navigate、GoForward 和 GoBack 方法。
通过 Navigate(TypeName, Object) 方法可以导航并将数据对象传递到新页面。我们将使用此方法在我们的页面之间传递数据。
第一个参数 typeof(MainPage) 是我们将要导航到的页面的 Type。第二个参数是我们传递给将要导航到的页面的数据对象。
在本例中,我们传递 clicked 项。在 SplitPage.xaml.cs代码隐藏页面中,
我们需要使用刚刚从项目页面传递的 FeedData 对象执行某些操作。为此,我们将覆盖Page的OnNavigatedTo方法。
该方法已添加到页面模板代码中,因此我们只需要对其进行修改以便与我们的数据关联。
模板页面包含一个名为 DefaultViewModel 的内置视图模型,我们可以将数据与之关联。
NavigationEventArgs.Parameter 属性包含从项目页面传递的数据对象。 我们将其转换回 FeedData 对象,
并将信息提要数据添加至具有关键字 Feed 的 DefaultViewModel,
将 FeedData.Items 属性添加至具有关键字 Items 的 DefaultViewModel。以下是更新的 OnNavigatedTo 方法:
protected override void OnNavigatedTo(NavigationEventArgs e) { // TODO: Assign a bindable group to this.DefaultViewModel["Group"] // TODO: Assign a collection of bindable items to this.DefaultViewModel["Items"] FeedData feedData = e.Parameter as FeedData; if (feedData!= null ) { DefaultViewModel[ "Feed" ] = feedData; DefaultViewModel[ "Items" ] = feedData.Items; if (!UsingLogicalPageNavigation()) { itemsViewSource.View.MoveCurrentToFirst(); } } } |