Frage

I have a problem where im trying to get all the "thumb" image links out of the XML, and then show them in a LongListSelector.

Here is my LongListSelector code:

<phone:LongListSelector LayoutMode="Grid" GridCellSize="180,180" Margin="0,0,-12,0" ItemsSource="{Binding}">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <Grid Background="{StaticResource PhoneAccentBrush}" Margin="5">
                            <StackPanel>
                                    <Image Source="{Binding Images}"></Image>
                            </StackPanel>
                        </Grid>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
                </phone:LongListSelector>

and my DataContext:

this.DataContext = gd.GetGameItems;

The code to read the xml and to store data:

var feedXml = XDocument.Parse(e.Result);

            var gameData = feedXml.Root.Descendants("Game").Select(x => new GetGame
            {
                ID = (int)x.Element("id"),
                GameTitle = (string)x.Element("GameTitle"),
                Platform = (string)x.Element("Platform"),
                ReleaseDate = (string)x.Element("ReleaseDate"),
                Images = new Uri(GetImages(x)),
            })
              .ToList();
            foreach (var item in gameData) GetGameItems.Add(item);

private ObservableCollection<GetGame> _GetGameItems = new ObservableCollection<GetGame>();
    public ObservableCollection<GetGame> GetGameItems
    {
        get
        {
            return this._GetGameItems;
        }
    }

public class GetGame
{
    public int ID { get; set; }
    public string GameTitle { get; set; }        
    public string Platform { get; set; }
    public string ReleaseDate { get; set; }
    public Uri Images { get; set; }
}

This is where im trying to get all the images from, right now i can only get from one image link:

 private static string GetImages(XElement gameNode)
    {
        return "http://thegamesdb.net/banners/" + (string)gameNode.Descendants("boxart")
                               .FirstOrDefault().Attribute("thumb");
    }

Here is the XML:

    <Data>
  <baseImgUrl>http://thegamesdb.net/banners/</baseImgUrl>
  <Game>
    <id>2</id>
    <GameTitle>Crysis</GameTitle>
     <PlatformId>1</PlatformId>
     <Platform>PC</Platform>
     <ReleaseDate>11/13/2007</ReleaseDate>
     <Overview>
     From the makers of Far Cry, Crysis offers FPS fans the best-looking, most highly-        evolving gameplay, requiring the player to use adaptive tactics and total customization of    weapons and armor to survive in dynamic, hostile environments including Zero-G. Earth, 2019. A team of US scientists makes a frightening discovery on an island in the South China Sea. All contact with the team is lost when the North Korean Government quickly seals off the area. The United States responds by dispatching an elite team of Delta Force Operators to recon the situation. As tension rises between the two nations, a massive alien ship reveals itself in the middle of the island. The ship generates an immense force sphere that freezes a vast portion of the island and drastically alters the global weather system. Now the US and North Korea must join forces to battle the alien menace. With hope rapidly fading, you must fight epic battles through tropical jungle, frozen landscapes, and finally into the heart of the alien ship itself for the ultimate Zero G showdown.
    </Overview>
<ESRB>M - Mature</ESRB>
<Genres>
<genre>Shooter</genre>
</Genres>
<Players>4+</Players>
<Co-op>No</Co-op>
<Youtube>http://www.youtube.com/watch?v=i3vO01xQ-DM</Youtube>
<Publisher>Electronic Arts</Publisher>
<Developer>Crytek</Developer>
<Rating>8.1111</Rating>
<Images>
  <fanart>
    <original width="1920" height="1080">fanart/original/2-1.jpg</original>
    <thumb>fanart/thumb/2-1.jpg</thumb>
  </fanart>
  <fanart>
    <original width="1920" height="1080">fanart/original/2-2.jpg</original>
    <thumb>fanart/thumb/2-2.jpg</thumb>
  </fanart>
  <fanart>
    <original width="1920" height="1080">fanart/original/2-3.jpg</original>
    <thumb>fanart/thumb/2-3.jpg</thumb>
  </fanart>
  <fanart>
    <original width="1920" height="1080">fanart/original/2-4.jpg</original>
    <thumb>fanart/thumb/2-4.jpg</thumb>
  </fanart>
  <fanart>
    <original width="1920" height="1080">fanart/original/2-5.jpg</original>
    <thumb>fanart/thumb/2-5.jpg</thumb>
  </fanart>
  <fanart>
    <original width="1920" height="1080">fanart/original/2-6.jpg</original>
    <thumb>fanart/thumb/2-6.jpg</thumb>
  </fanart>
  <boxart side="back" width="1525" height="2162" thumb="boxart/thumb/original/back/2-1.jpg">boxart/original/back/2-1.jpg</boxart>
  <boxart side="front" width="1525" height="2160" thumb="boxart/thumb/original/front/2-1.jpg">boxart/original/front/2-1.jpg</boxart>
  <banner width="760" height="140">graphical/2-g2.jpg</banner>
  <banner width="760" height="140">graphical/2-g3.jpg</banner>
  <screenshot>
    <original width="1920" height="1080">screenshots/2-1.jpg</original>
    <thumb>screenshots/thumb/2-1.jpg</thumb>
  </screenshot>
  <clearlogo width="400" height="95">clearlogo/2.png</clearlogo>
</Images>
</Game>
</Data>

I hope there is someone that can help.

War es hilfreich?

Lösung

Are you looking for?

private static IEnumerable<Uri> GetImages(XElement gameNode)
    {
        return gameNode
                  .Descendants("boxart")
                  .Select(t => new Uri("http://thegamesdb.net/banners/" + (string)t.Attribute("thumb")));

Also change the

 Images = new Uri(GetImages(x))

to

Images = GetImages(x).ToList()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top