因此,在我正在制作的Windows Phone 7应用程序中,我使用带有SelectionChanged事件处理程序的ListBox将用户导航到新网页,显示其他信息。 MainPage.xaml显示了一个ListBox,其中填充了JSON文件中的信息,该文件可以正常工作。但是,如果用户想要阅读有关新闻的更多信息,他/她将不得不点击ListBox中的新闻,这会触发SelectionChanged事件,如下所示:
private void NewsList_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
int index = NewsList.SelectedIndex;
fetchNewsContent newsContentGetSet = new fetchNewsContent();
newsContentGetSet.newsID = newslistJson.ElementAt(index).news_id;
newsContentGetSet.newsTitle = newslistJson.ElementAt(index).news_title;
newsContentGetSet.newsAbstract = newslistJson.ElementAt(index).news_abstract;
newsContentGetSet.newsContent = newslistJson.ElementAt(index).news_content;
newsContentGetSet.newsAuthor = newslistJson.ElementAt(index).news_author;
newsContentGetSet.newsDatePublished = newslistJson.ElementAt(index).news_date_published_no;
//object[] someobject = { newsContentGetSet.newsID, newsContentGetSet.newsTitle, newsContentGetSet.newsAbstract, newsContentGetSet.newsContent, newsContentGetSet.newsAuthor, newsContentGetSet.newsDatePublished };
NavigationService.Navigate(new Uri("/NewsPage.xaml?obj=" + index, UriKind.Relative));
}
这只是为每个字符串(newsID,newsTitle等)使用带有getter和setter的类(newsContentGetSet.cs),但是当激发SelectionChanged时,.cs文件不会设置新给定的newslistJson值!为什么?
我也试过在NavigationService中只发送文本参数,但是newsContent字符串太长了(整个新闻故事),所以它返回了“shell page uri too long”错误。
现在,这只会将索引int发送到NewsPage页面,该页面尝试捕获值,但由于newsContentGetSet实际上没有设置任何内容(在我尝试时不调试它),因此失败。 Aaany的想法,真的吗?
答案 0 :(得分:1)
而不是传递参数数据。您应该将数据保存到App类中,然后在导航到下一页时从那里检索它们。
App.xaml.cs
public static fetchNewsContent newsContentGetSet;
访问它
var fetchedNewsContent = App.fetchNewsContent;
您可以从任何页面存储/检索数据。请注意,如果应用程序已关闭,则数据将消失。