Windows Phone 7 XML заполнить до ошибки списка - PullRequest
0 голосов
/ 19 сентября 2011

Я пытаюсь создать приложение, которое загружает удаленный 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>

1 Ответ

1 голос
/ 19 сентября 2011

"t" является атрибутом "c", а не элементом: вы должны использовать .Attribute ("t") вместо .Element ("t")

http://msdn.microsoft.com/en-us/library/bb387086.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...