2013-12-14 3 views
0

В настоящее время я разрабатываю приложение для Windows Phone 8, которое захватывает данные JSON из Интернета, анализирует его в коллекции, связывает эту коллекцию с списком и показывает ее. Это прекрасно работает, и я делаю это так:Получение информации из списка Windows Phone 8

void downloadData() 
{ 
    // Instance of a WebClient object 
    WebClient downloader = new WebClient(); 

    // EventHandler for download String completed 
    downloader.DownloadStringCompleted += new DownloadStringCompletedEventHandler(downloaded); 

    // AsyncDownloading of the Websitecontent and Encoding in UTF8 
    downloader.Encoding = Encoding.UTF8; 
    downloader.DownloadStringAsync(new Uri("http://scm1.hensgen.net:8181/cxf/plugins/mandantenmonitor/rs/list", UriKind.Absolute)); 
} 

void downloaded(object sender, DownloadStringCompletedEventArgs e) 
{ 
    // tests wheter string is empty or not downloaded completely 
    if (e.Result == null || e.Error != null) 
    { 
     MessageBox.Show("Error occured while downloading JSON-file from server"); 
    } 
    else 
    { 
     // Deserialize if downloaded succeedes 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(MandantenListeRoot)); 

     // Reads the e.Result string and writes it in UTF8 encoded into a MemoryStream and Cast it from type object to MandantenListeRoot 
     MandantenListeRoot root = serializer.ReadObject(new MemoryStream(Encoding.UTF8.GetBytes(e.Result))) as MandantenListeRoot; 
     MandantenListe mandListe = root.mandantenListeDataMember; 

     // Bind the downloaded Collection to our MandantenListBox-control Panel 
     mandantenListeBox.ItemsSource = mandListe.MandantenCollection; 
    } 

} 

Я хочу, чтобы разобрать и ID атрибут этой коллекции на следующую страницу в моем вверх, когда я нажимаю на одну запись в списке. Теперь я читал об этом кучу на трубах и, если я правильно понимаю, я должен просто быть в состоянии преобразовать объект отправителя в методе MouseButtonDown и передать его на следующей странице, как этот

private void MandantenStackPanel_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e) 
    { 
     //MandantenListeMandant mandant = (sender as Button).DataContext as MandantenListeMandant 
     // PhoneApplicationService.Current.State["MandantenNummer"] = mandant.MandantenNummer; 
     NavigationService.Navigate(new Uri("/Vorlagen.xaml", UriKind.Relative)); 

    } 

Это не кажется работать, и если я прочитаю отладочную информацию, я правильно понял, что объект отправителя равен -1. Соответствующий XAML для моей страницы выглядит так:

<ListBox x:Name="mandantenListeBox" Margin="0,0,0,0"> 
       <ListBox.ItemTemplate> 
        <DataTemplate > 
         <StackPanel Margin="0,10,0,10" Width="455" MouseLeftButtonDown="MandantenStackPanel_MouseLeftButtonDown"> 
          <TextBlock Text="{Binding MandantenNummer}" FontSize="24" TextWrapping="Wrap"/> 
          <TextBlock Text="{Binding MandantenBezeichnung}" FontSize="24" TextWrapping="Wrap"/> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 

Благодарим за помощь, я очень ценю это.

ответ

0

Вы должны сделать это как веб-запрос, который будет выглядеть следующим образом:

NavigationService.Navigate(new Uri("/Chatting.xaml?SelectedIndex="+selectedItemID.ToString(), UriKind.Relative)); 

затем получить его на PAE навигации тоже:

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 
     try 
     { 
      selectedItemID = Convert.ToInt32(this.NavigationContext.QueryString["SelectedIndex"]); 
     } 
     catch 
     { 
      MessageBox.Show("An error occured finding selecteditem", "Error", MessageBoxButton.OK); 
     } 
    } 
+1

это не ответил на мой предназначенный вопрос, но как я узнал, это был просто неправильный актерский состав. должен был быть stackpanel вместо кнопки. Однако ваше решение очень помогло мне в моей следующей проблеме, поэтому большое вам спасибо. – Blue

Смежные вопросы