2012-04-14 78 views
1

我正在尝试使用for循环来限制添加到列表框的项目数。我使用Web客户端拉下JSON数据。数据总是有24项,我想将其限制为4.这里是循环:WP7循环限制添加到列表框的项目数

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

谢谢你的工作。如果你不介意,我还有一个额外的问题。我试图拉'artistName',但它不工作。查看我的班级更新 – nos9 2012-04-15 00:09:27

+1

@ nos9 - 当您说您正在尝试'拉入'artistName'时,您的问题并不清楚,但它不起作用。什么不工作,你想做什么? – 2012-04-15 00:14:41

+0

在我的应用程序中,我想显示发布名称,发布艺术家和图像。使用您提供的名称和图像的代码显示4个项目,但艺术家的名字没有。我已经在上面添加了我的xaml。 – nos9 2012-04-15 00:27:21