2014-02-21 3 views
1

С этим Previous Question мне тоже удалось показать выход. Я читал много постов здесь на StackOverflow, но не могу найти правильное решение для следующего:Как манипулировать выходом в ItemsSource?

Как управлять выход слишком ItemsSource, потому что:

{"order_id":"12345678","itemList":["235724","203224","222224","222324","230021"],"amount":["65","50","10","25","42"]} 

Номер 235724 также используется в URL-адрес IMG и должен стать похожим на «235724 X 65» для выбираемого списка.

Решение было:

ObservableCollection<CreateItem> pitems = new ObservableCollection<CreateItem>(); 

     for (int i = 0; i < rootObject.itemList.Count; i++) 
     { 
      var itemsku = rootObject.itemList[i]; 
      var amount = rootObject.amount[i]; 
      pitems.Add(new CreateItem() { pTitle = itemsku + " X " + amount , pImage = new BitmapImage(new Uri(string.Format("http://image.mgam79.nl/indb/{0}.jpg", itemsku)))}); 
     } 

     MyListBox.ItemsSource = pitems; 

    public class CreateItem 
    { 
     public string pTitle { get; set; } 
     public ImageSource pImage { get; set; } 
    } 

ответ

1

Создать в RootObject.cs новое свойство:

public List<string> ImageUrls { get; set;} 

В CS:

 var result = "{'order_id':'12345678','itemList':['235724','203224','222224','222324','230021'],'amount':['65','50','10','25','42']}"; 
     var rootObject = JsonConvert.DeserializeObject<RootObject>(result); 

     var imageUrls = new List<string>(); 

     foreach (var item in rootObject.itemList) 
     { 
      foreach (var amount in rootObject.amount) 
      { 
       imageUrls.Add(item + " X " + amount); 
      } 
      break; 
     } 

     rootObject.ImageUrls = imageUrls; 

     var items = new List<RootObject> 
     { 
      rootObject 
     }; 

     MyListBox.ItemsSource = items; 
    } 

В XAML:

<ListBox.ItemTemplate> 
        <DataTemplate> 
         <StackPanel Orientation="Vertical"> 
          <TextBlock> 
           <TextBlock.Inlines> 
            <Run Text="order_id:" /> 
            <Run Text="{Binding order_id}" /> 
           </TextBlock.Inlines> 
          </TextBlock> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="ItemList: " /> 
           <ItemsControl ItemsSource="{Binding itemList}" /> 
          </StackPanel> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="Amount: " /> 
           <ItemsControl ItemsSource="{Binding amount}" /> 
          </StackPanel> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="ImageUrls: " /> 
           <ItemsControl ItemsSource="{Binding ImageUrls}" /> 
          </StackPanel> 
         </StackPanel> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
+0

Привет могли бы вы объяснить мне, почему изображение показывает разве если я делать "" вместо вашего примера выше? – mmeulstee

+0

@mmeulstee Вам необходимо указать индекс ImageUrl. Попробуйте '' {Binding ImageUrls [0]} "' – ROMAN

+0

Nice nver подумал об этом, поэтому мне нужно создать в xaml список, например, около 30 из этих строк, поскольку список может быть переменным от 1 до многих. – mmeulstee

Смежные вопросы