1

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

    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 个项目。谢谢您的帮助。

更新

这是我的课

    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; }
}

和 xml

                <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>
4

1 回答 1

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);
}
于 2012-04-14T23:58:29.277 回答