2013-10-08 1 views
1

윈도우 8 스토어 앱입니다. 이 프로젝트에서. 다른 페이지로 데이터를 보내야합니다. 계획은 MainPage.xaml에 ItemGridView가 있고, 뉴스 이미지를 클릭하고, 그 뉴스의 기사 ID를 다음 페이지로 보내야하며 그 ID로 기사를 만들어야합니다.ItemGridView ItemClick Windows 스토어 애플 리케이션

나는이 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 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의 값을 가져올 수 없습니다. 다른 조언이 있습니까?

감사합니다.

UPDATE :

이것은 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) 
     { 
     } 
    } 

답변

3

click 이벤트는 그리드 뷰에서 항목을 선택할 필요가 없으므로 선택한 항목이 null 일 가능성이 있습니다. 대신이 방법을 사용해보십시오.

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

시각적 요소에 바인딩 된 데이터 항목이어야하는 e.ClickedItem의 사용에 유의하십시오.

+0

덕분에 비주얼 스튜디오에서 아래를 참조 LayoutAwarePage의 OnNavigatedTo 메서드에 호출을 추가 한 작업을 시작할 것입니다 희망, 그것은 ID를 가져옵니다,하지만 내가 말할 때 "값은 null이 될 수 없다."라고 말합니다. 매개 변수 이름 : key "를 탐색하고"frameState [_pageKey] = pageState; "를 탐색합니다. 다음 페이지의 코드가 원인입니까? –

+0

@ KuthayGümüş 두 페이지의 코드를 공유 할 수 있습니까? 이것처럼 판단하기 어려운 종류가 – Manvik

+0

내가 편집 한 질문입니다. –

1

이 시도하고 나는 그것이

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

나는 내가 아래 디버깅 할 때의 대답에 대한

+0

이것은 BasicPage1에 대한 권리입니까? –

+0

이 코드는 기본 페이지에 없습니다. – Manvik

+0

"base.OnNavigatedTo (e);" 실종됐다 .. 모든 문제가 ..? 덕분에 .. –

관련 문제