因此,在我正在制作的Windows Phone 7应用程序中,我使用带有SelectionChanged事件处理程序的ListBox来将用户导航到新的网页,从而显示其他信息。 MainPage.xaml显示一个列表框,其中填充了来自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的想法,真的吗?

最佳答案

而不是通过参数传递数据。您应该将数据保存到App类中的变量中,然后在导航到下一页时从那里检索它们。

App.xaml.cs

public static fetchNewsContent newsContentGetSet;


访问它

var fetchedNewsContent = App.fetchNewsContent;


您可以从任何页面存储/检索数据。请注意,如果应用程序关闭,数据将消失。

关于c# - 列表框SelectionChanged WP7可使用参数进行导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15137835/

10-09 13:38