В настоящее время я разрабатываю приложение для 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>
Благодарим за помощь, я очень ценю это.
это не ответил на мой предназначенный вопрос, но как я узнал, это был просто неправильный актерский состав. должен был быть stackpanel вместо кнопки. Однако ваше решение очень помогло мне в моей следующей проблеме, поэтому большое вам спасибо. – Blue