2012-04-14 2 views
1

for 루프를 사용하여 목록 상자에 추가 된 항목 수를 제한하려고합니다. 웹 클라이언트를 사용하여 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 개의 항목을 모두 표시합니다. 도와 주셔서 감사합니다. 여기

업데이트는 코드가 목록에 추가 새로운 개체를 만드는 것이 아니라,

   <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

내 수업

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입니다. 사용할 개체 (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

+1

@ nos9 - 'artistName'을 (를) 끌어 오기를 원할 때 질문이 명확하지 않지만 작동하지 않습니다. 무엇이 작동하지 않고 무엇을하려고합니까? –

+0

내 앱에서 출시 이름, 출시 아티스트 및 이미지를 표시하고 싶습니다. 이름과 이미지를 제공 한 코드를 사용하면 4 개 항목에 대해 표시되지만 아티스트 이름은 표시되지 않습니다. 위의 xaml을 추가했습니다. – nos9

관련 문제