Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ItemGridView项目单击Windows应用商店应用程序_C#_Xaml_Windows Store Apps - Fatal编程技术网

C# ItemGridView项目单击Windows应用商店应用程序

C# ItemGridView项目单击Windows应用商店应用程序,c#,xaml,windows-store-apps,C#,Xaml,Windows Store Apps,我使用的是windows 8应用商店应用程序。在这个项目中。我需要将数据发送到另一个页面。计划是,我在MainPage.xaml中有一个ItemGridView,我单击新闻的图像,我需要将该新闻的文章ID发送到下一页,并且必须使用该ID创建一篇文章 我用这个做了这个WindowsPhone8应用程序 private void MainLongListSelectorSelectionChanged(object sender, SelectionChangedEventArgs e) {

我使用的是windows 8应用商店应用程序。在这个项目中。我需要将数据发送到另一个页面。计划是,我在MainPage.xaml中有一个ItemGridView,我单击新闻的图像,我需要将该新闻的文章ID发送到下一页,并且必须使用该ID创建一篇文章

我用这个做了这个WindowsPhone8应用程序

private void MainLongListSelectorSelectionChanged(object sender, SelectionChangedEventArgs e)
{
            NavigationService.Navigate(
                new Uri(
                    "/DetailsPage.xaml?selectedIndex=" +
                    ((MyWebApi.Headline) MainLongListSelector.SelectedItem).ARTICLEID, UriKind.Relative));
}
在win store应用程序中,我尝试了这个

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


    }
公共密封部分类主页面:try012.Common.LayoutAwarePage
{
私有字符串_json=“”;
私有MyWebApi.RootObject标题{get;set;}
公共主页()
{
this.InitializeComponent();
}
受保护的覆盖无效加载状态(对象导航参数,字典页面状态)
{
}
受保护的覆盖无效OnNavigatedTo(NavigationEventArgs e)
{
常量字符串urlt=“mywebapirl”;
var hWebRequestt=(HttpWebRequest)WebRequest.Create(urlt);
hWebRequestt.Method=“GET”;
HWebRequest.BeginGetResponse(主长列表选择器或加载完成T,HWebRequest);
}
私有void MainLongListSelectorLoadCompletedt(IAsyncResult ar)
{
var request=(HttpWebRequest)ar.AsyncState;
var response=(HttpWebResponse)request.EndGetResponse(ar);
使用(var streamReader=newstreamreader(response.GetResponseStream()))
{
_json=streamReader.ReadToEnd();
标题=JsonConvert.DeserializeObject(_json);
}
如果(Headlines.MainPageHeadline.Count>0)
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,()=>
{
itemGridView.ItemsSource=Headlines.MainPageHeadline.ToList();
});
}
私有void itemGridView\u ItemClick(对象发送者,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)
        {
        }
    }
公共密封部分类基本页面1:try012.Common.LayoutAwarePage
{
公共基础设施1()
{
this.InitializeComponent();
}
受保护的覆盖无效加载状态(对象导航参数,字典页面状态)
{
}
受保护的覆盖无效保存状态(字典页面状态)
{
}
}

单击事件不需要在gridview中选择项目,因此您选择的项目可能为空。试试这个

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

注意使用了
e.ClickedItem
,它应该是绑定到可视元素的数据项。

单击事件不需要在gridview中选择项,因此您选择的项可能为空。试试这个

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

注意
e.ClickedItem的用法,它应该是绑定到可视元素的数据项。

试试这个,我希望它能开始工作

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

我已经添加了对OnNavigatedTo方法LayoutWarePage的调用。试试这个,我希望它能开始工作

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

我已经添加了对LayoutWarePage的OnNavigatedTo方法的调用,谢谢您的回答。我在visual studio中看到了下面的内容,当我调试下面的内容时,它会获取ID,但是,当我向前看时,它会说“值不能为null。参数名称:key”并导航“frameState[\u pageKey]=pageState”;这是下一页cs代码的原因吗?你能帮我一下吗it@KuthayGümüş你能分享这两个页面的代码吗。像这样判断有点困难谢谢你的回答。我在visual studio中看到,当我在下面调试时,它会得到ID,但是,当我前进时,它会说“值不能为null。参数名:key”并导航“frameState[\u pageKey]=pageState”;这是下一页cs代码的原因吗?你能帮我一下吗it@KuthayGümüş你能分享这两个页面的代码吗。像这样很难判断,结果是你从LayoutWarePage继承了你的页面,在该页面的OnNavigatedTo事件中,它存储了与导航相关的信息。当您在页面中重写该方法时,没有调用该方法的基本版本,也没有执行与导航相关的信息,因此您得到了错误。请将其标记为答案!:)是的,发生的情况是,您从LayoutWarePage继承了您的页面,并且在该页面的OnNavigatedTo事件中,它存储了与导航相关的信息。当您在页面中重写该方法时,没有调用该方法的基本版本,也没有执行与导航相关的信息,因此您得到了错误。请将其标记为答案!:)