2

そのため、作成中の Windows Phone 7 アプリでは、ListBox を SelectionChanged イベント ハンドラーと共に使用して、ユーザーを新しい Web ページに移動し、追加情報を表示します。MainPage.xaml は、正しく機能する JSON ファイルからの情報が取り込まれた ListBox を示しています。ただし、ユーザーがニュースの詳細を読みたい場合は、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 など) のゲッターとセッターを持つクラス (newsContentGetSet.cs) を使用しますが、SelectionChanged が起動されると、.cs ファイルは新しく指定された newslistJson 値を設定しません! なんで?

また、NavigationService でテキスト パラメータのみを送信しようとしましたが、newsContent 文字列が長すぎる (ニュース記事全体) ため、「シェル ページ uri が長すぎます」というエラーが返されました。

現在、これは単純にインデックス int を NewsPage ページに送信し、値をキャプチャしようとしますが、newsContentGetSet が実際には何も設定していないため失敗します (試行時にデバッグしません)。本当にアイデアはありますか?

4

1 に答える 1

1

パラメータでデータを渡す代わりに。変数へのデータを App クラスに保存し、次のページに移動したときにそこから取得する必要があります。

App.xaml.cs

public static fetchNewsContent newsContentGetSet;

アクセスする

var fetchedNewsContent = App.fetchNewsContent;

任意のページからデータを保存/取得できます。アプリケーションを閉じると、データが失われることに注意してください。

于 2013-02-28T14:45:55.543 に答える