2013-08-21 2 views
0

Привет Мне нужно привязать данные к listboxx с datateplate в списке, но я получаю это: System.Colllections.Generic.List'1 [System.String] вместо списка элементов.Привязать список к listbox с datatemplate

<ListBox x:Name="lbMenu" ItemsSource="{Binding MyDataForLunchGrid}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock x:Name="tbMenu" Text="{Binding vydajnaMenus}"/> 
       <TextBlock x:Name="tbMenuNumber" Text="{Binding vydajnaNumber}"/> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Связывание данных:

_myDataForLunchGrid.Add(new BindingData 
{    
    vydajnaMenus = Vydajna1Menus.Select(s => s.ToString()).ToList(), 
    vydajnaNumber = "01" 
}); 
OnPropertyChanged("MyDataForLunchGrid"); 

MyCollection в MainPage

private ObservableCollection<BindingData> _myDataForLunchGrid = new ObservableCollection<BindingData>(); 

    public ObservableCollection<BindingData> MyDataForLunchGrid 
    { 
     get { return _myDataForLunchGrid; } 
     set { _myDataForLunchGrid = value; } 
    } 

Класс BindingData

public List<string> vydajnaMenus { get; set; } 
public string vydajnaNumber { get; set; } 

Любая идея, почему я получаю System.Colllections.Generic.List'1 [System.String] вместо списка элементов.?

ответ

0

OK Я заработал. Это не идеальное решение, но отлично работает.

   foreach (var myVar in Vydajna1Menus) 
       { 
       _myDataForLunchGrid.Add(new BindingData 
       { 
        vydajnaMenus = myVar, 
        vydajnaNumber ="0"+numberOfFood.ToString() 
       }); 
       } 
       OnPropertyChanged("MyDataForLunchGrid"); 
0

Я хочу показать коллекцию строк в отдельном элементе списка, тогда вам нужно как-то объединить строки. В противном случае среда выполнения просто вызовет ToString() для объекта.

Я думаю, что самый простой способ - написать конвертер, который будет конкатенировать строки в любой коллекции.

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