您不能以这种方式通过 NavigationService.Navigate 传递对象,它的行为类似于 URL。
您需要将您需要的信息添加到查询字符串中,在 OnNavigatedTo 函数中读取它并使用这些值来生成您需要的数据:
private void btnOwners_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/ViewCarMembers.xaml?owners=1,2,3,4,5,6,7,8,9",UriKind.Relative));
}
您正在导航到的页面中:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
var data = this.NavigationContext.QueryString;
if (data.ContainsKey("owners"))
{
//Iterate through values (comma seperated)
//Populate a new list with the owners.
}
base.OnNavigatedTo(e);
}
上面的代码还没有经过测试,这只是我为了理解这一点而编造出来的——你总是可以遍历你的列表并将完整的数据集附加到查询字符串中,将它推回到另一个对象中边。
一个更好的例子,看看 Shai Raiten 如何通过以下博客文章做到这一点:
http://blogs.microsoft.co.il/blogs/shair/archive/2011/05/01/wp7-data-between-pages-part-1.aspx