2
votes

So, in the Windows Phone 7 app I'm making, I use a ListBox with a SelectionChanged event handler to navigate a user to a new webpage, showing additional information. The MainPage.xaml shows a ListBox populated with information from a JSON file, which works correctly. However, if a user wants to read more about the news, he/she will have to click on the news in the ListBox, which fires the SelectionChanged event, which looks like this:

    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));

    }

This simply uses a class (newsContentGetSet.cs) with getters and setters for each of the strings (newsID, newsTitle, etc.), but when the SelectionChanged is fired, it the .cs file doesn't set the newly given newslistJson values! Why?

I also tried sending only text parameters in the NavigationService, but the newsContent string was too long (whole news story), so it returned an "shell page uri too long" error.

Right now, this sends simply the index int to the NewsPage page, which tries to capture the values, but fails since the newsContentGetSet doesn't actually set anything (doesn't debug into it when I try). Aaany ideas, really?

1

1 Answers

1
votes

Instead of passing the data on parameter. You should save the data to variable into App class and then retrieve them from there when you have navigated to next page.

App.xaml.cs

public static fetchNewsContent newsContentGetSet;

Accessing it

var fetchedNewsContent = App.fetchNewsContent;

You can store/retrieve the data from any page. Note that if the application is closed the data is gone.