Я пытаюсь создать приложение, которое загружает удаленный XML и заполняет его в поле списка. Я последовал этому уроку и прошел половину пути. Когда у меня есть URL фида в Твиттере, я могу заполнить контент на телефон. Но когда я пробую свой XML, он не появляется на экране
В этой строке "System.Diagnostics.Debug.WriteLine (coupon);" Я получаю ожидаемый XML. Поэтому я уверен, что до вышеприведенного кода все работает нормально.
Мой код
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
{
System.Diagnostics.Debug.WriteLine("Error: "+e);
}
DeviceBroker dB = new DeviceBroker();
XElement coupon = XElement.Parse(e.Result);
System.Diagnostics.Debug.WriteLine(coupon);
MainListBox.ItemsSource = from query in coupon.Descendants("cs")
select new ViewModels.LoadCoupon()
{
CouponName = (string)query.Element("c").Element("t").Value,
//MerchantImage = dB.getBaseUri() + "images/merchant/" + (string)query.Element("ms").Element("m").Element("id")
MerchantImage = dB.getBaseUri() + "images/merchant/" + (string)query.Element("c").Element("mId") + ".png"
};
}
<d>
<ms>
<m id="9921" n="The Book Company" />
<m id="6333" n="Earth Rental" />
<m id="6329" n="The Organic Baker" />
<m id="6331" n="News Stand" />
<m id="6327" n="The Jam Company" />
<m id="6325" n="The Fruit Company" />
</ms>
<cs>
<c id="14533" mId="9921" t="50% Off Any Book Purchase">
<ls>
<l id="40145" lng="-0.0724" lat="51.5024" d="4.97" dim="45.91" intX="" intY="" intL="" />
</ls>
<cats>
<cat id="41" />
<cat id="43" />
</cats>
<as />
</c>
</cs>
</d>
Как видно из моего кода, я пытаюсь получить элементы d-> cs-> c-> t и d-> cs-> c-> mId. Я получаю исключение NullReferenceException. Если я вычеркну .Value из кода, я не получу никакой ошибки, в то же время я не получу ничего на экране. Может кто-нибудь, пожалуйста, немного света на это? Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Мой XAML выглядит примерно так.
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<ListBox x:Name="MainListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="132">
<Image Source="{Binding MerchantImage}" Height="73" Width="73" VerticalAlignment="Top" Margin="0,10,8,0"/>
<StackPanel Width="370">
<TextBlock Text="{Binding CouponName}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>