1

私はWindows 8ストアアプリを使用しています。このプロジェクトでは。データを別のページに送信する必要があります。計画は、MainPage.xaml に ItemGridView があり、ニュースの画像をクリックして、そのニュースの ARTICLE ID を次のページに送信し、その ID で記事を作成する必要があるというものです。

これでこのWindows Phone 8アプリケーションを実行しました。

private void MainLongListSelectorSelectionChanged(object sender, SelectionChangedEventArgs e)
{
            NavigationService.Navigate(
                new Uri(
                    "/DetailsPage.xaml?selectedIndex=" +
                    ((MyWebApi.Headline) MainLongListSelector.SelectedItem).ARTICLEID, UriKind.Relative));
}

winストアアプリで、これを試します;

private void itemGridView_ItemClick(object sender, ItemClickEventArgs e)
{
            this.Frame.Navigate(typeof (BasicPage1),
                ((MyWebApi.MainPageHeadline) itemGridView.SelectedItem).ARTICLEID);
}

そして、私もこのように試しました。

private void itemGridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            var articleid = ((MyWebApi.MainPageHeadline) itemGridView.SelectedItem).ARTICLEID;

            this.Frame.Navigate(typeof (BasicPage1), articleid);
        }

しかし、私は

オブジェクト参照がオブジェクトのインスタンスに設定されていません。

行の終わりに。

これではIDの値を取得できませんでした。他に何かアドバイスはありますか?

ありがとうございました。

アップデート :

これは MainPage.xaml.cs です。

public sealed partial class MainPage : try012.Common.LayoutAwarePage
    {
        private string _json = "";
        private MyWebApi.RootObject Headlines { get; set; }

        public MainPage()
        {
            this.InitializeComponent();
        }
        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {

        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            const string urlt = "MyWebApiURL";
            var hWebRequestt = (HttpWebRequest)WebRequest.Create(urlt);
            hWebRequestt.Method = "GET";
            hWebRequestt.BeginGetResponse(MainLongListSelectorLoadCompletedt, hWebRequestt);
        }

        private void MainLongListSelectorLoadCompletedt(IAsyncResult ar)
        {
            var request = (HttpWebRequest)ar.AsyncState;
            var response = (HttpWebResponse)request.EndGetResponse(ar);
            using (var streamReader = new StreamReader(response.GetResponseStream()))
            {
                _json = streamReader.ReadToEnd();
                Headlines = JsonConvert.DeserializeObject<MyWebApi.RootObject>(_json);
            }
            if (Headlines.MainPageHeadline.Count > 0)

                Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    itemGridView.ItemsSource = Headlines.MainPageHeadline.ToList();
                });
        }

        private void itemGridView_ItemClick(object sender, ItemClickEventArgs e)
        {
            this.Frame.Navigate(typeof(BasicPage1),((MyWebApi.MainPageHeadline)e.ClickedItem).ARTICLEID);
        }


    }

これは BasicPage1.xaml.cs です。

public sealed partial class BasicPage1 : try012.Common.LayoutAwarePage
    {
        public BasicPage1()
        {
            this.InitializeComponent();
        }

        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {

        }

        protected override void SaveState(Dictionary<String, Object> pageState)
        {
        }
    }
4

2 に答える 2

3

クリック イベントは、グリッドビューで項目を選択する必要がないため、選択した項目が null である可能性があります。代わりにこれを試してください。

private void itemGridView_ItemClick(object sender, ItemClickEventArgs e)
{
    this.Frame.Navigate(typeof (BasicPage1),
        ((MyWebApi.MainPageHeadline) e.ClickedItem).ARTICLEID);
}

e.ClickedItemwhich の使用は、ビジュアル要素にバインドされたデータ項目であることに注意してください。

于 2013-10-08T08:47:44.940 に答える