2012-04-14 16 views
1

に加えます。私は、Webクライアントを使用してJSONデータをプルダウンしています。データは常に24個のアイテムを持って、私はここ4に制限したいと思いループです:WP7は、私は私のリストボックスに追加された項目の数を制限するために、forループを使用しようとしているリストボックス

public void jsonHome_GetDataCompleted(object snder, DownloadStringCompletedEventArgs e) 
    { 
     NewReleasesCharts homeData = JsonConvert.DeserializeObject<NewReleasesCharts>(e.Result); 

     int limit = 4; 

     for (int i = 0; i <= limit; i++) 
     { 
      FeaturedReleases release = homeData.results.featuredReleases[i]; 

      int releaseID = release.id; 
      string releaseName = release.name; 
      string releaseImg = release.images.large.url; 

      new ReleaseLarge() 
      { 
       url = releaseImg 
      }; 
      new FeaturedReleases() 
      { 
       id = releaseID, 
       name = releaseName 
      }; 

     } 

     this.listRelease.ItemsSource = homeData.results.featuredReleases;   
    } 

これは動作しますが、それでも全24の項目が表示されます。助けてくれてありがとう。ここで

UPDATE

は、コードが新しいオブジェクトを作成しますが、リストに追加されていない私のクラス

public class NewReleasesCharts 
{ 
    //public Metadata metadata { get; set; } 
    public ResultHome results = new ResultHome(); 
    public IEnumerator<ResultHome> GetEnumerator() 
    { 
     return this.results.GetEnumerator(); 
    } 
} 

public class ResultHome 
{ 
    public List<FeaturedReleases> featuredReleases { get; set; } 

    //public List<FeaturedCharts> featuredCharts { get; set; } 
    //public List<TopDownloads> topdownloads { get; set; } 
    //public List<MostPopularReleases> mostPopularReleases { get; set; } 
    //public List<Components> components { get; set; } 

    internal IEnumerator<ResultHome> GetEnumerator() 
    { 
     throw new NotImplementedException(); 
    } 
} 

public class FeaturedReleases 
{ 
    public int id { get; set; } 
    public string type { get; set; } 
    public string name { get; set; } 
    public string slug { get; set; } 
    public ReleaseImage images { get; set; } 
    public List<Artists> artists { get; set; } 
} 

public class Artists 
{ 
    public int artistid { get; set; } 
    public string artistName { get; set; } 
} 

public class ReleaseImage 
{ 
    //public ReleaseSmall small { get; set; } 
    public ReleaseMedium medium { get; set; } 
    public ReleaseLarge large { get; set; } 
} 

public class ReleaseMedium 
{ 
    public int width { get; set; } 
    public int height { get; set; } 
    public string url { get; set; } 
    public string secureUrl { get; set; } 
} 

public class ReleaseLarge 
{ 
    public int width { get; set; } 
    public int height { get; set; } 
    public string url { get; set; } 
    public string secureUrl { get; set; } 
} 

とXAML

   <ListBox Grid.Row="0" x:Name="listRelease"> 

        <ListBox.ItemsPanel> 
         <ItemsPanelTemplate> 
          <toolkit:WrapPanel Orientation="Horizontal" /> 
         </ItemsPanelTemplate> 
        </ListBox.ItemsPanel> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Vertical" > 
           <toolkit:HubTile Source="{Binding images.large.url}" Margin="10" /> 
           <TextBlock Text="{Binding name}" Width="173" /> 
           <TextBlock Text="{Binding artists.artistName}" Width="173" /> 
          </StackPanel> 
         </DataTemplate> 
        </ListBox.ItemTemplate> 

       </ListBox> 

答えて

2

です。どのオブジェクト(ReleaseLargeまたはFeaturedRelease)を使用するかはわかりません。 homeDataに格納されている逆シリアル化されたJSON結果に対してlinqを使用してみてください。働い

public void jsonHome_GetDataCompleted(object snder, DownloadStringCompletedEventArgs e) 
{ 
    NewReleasesCharts homeData = JsonConvert.DeserializeObject<NewReleasesCharts>(e.Result); 

    const int limit = 4; 

    this.listRelease.ItemsSource = homeData.results.featuredReleases.Take(limit); 
} 
+0

感謝。あなたが気にしないなら、私にはもう1つ質問があります。私は 'artistName'を取り込もうとしていますが、動作しません。 nos9 @私のクラス – nos9

+1

のためのアップデートを参照してください - あなたはartistName' 'でプル」にしようとしているが、それが動作していないと言うとき、あなたの質問は不明です。何がうまくいかず、何をしようとしていますか? –

+0

は私のアプリでは、私は、リリース名、リリースアーティスト、および画像を表示したいと思います。指定したコードを使用すると、名前と画像が4つの項目に表示されますが、アーティスト名は表示されません。上記のxamlを追加しました。 nos9 @ – nos9

関連する問題