oimitro
oimitro

Reputation: 1506

Add multiple items in a listbox row

So far i have been working with listview without any problem. I have been able to pass multiple columns and fill them with images, text etc. I decided to do the same thing with a listbox but things there got complicated. In a listview i do the following :

<DataTemplate x:Key="ImageTemplate" >
    <Image x:Name="FavoriteImageList"  Tag="{Binding tagger}" Width="12" Height="12" Source="{Binding ImageSource}" MouseLeftButtonDown="FavoriteImageList_MouseLeftButtonDown"/>
</DataTemplate>

<ListView x:Name="Citys">
    <ListView.View>
        <GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
            <GridViewColumn Width="90" Header="Image" CellTemplate="{StaticResource ImageTemplate}"/>
            <GridViewColumn Width="178" Header="Name" DisplayMemberBinding="{Binding Name}" />
            <GridViewColumn Width="178" Header="City" DisplayMemberBinding="{Binding City}"/>
            <GridViewColumn Width="140" Header="Author" DisplayMemberBinding="{Binding Author}"/>
        </GridView>
    </ListView.View>
</ListView>

And i fill columns like this :

foreach(var fav in Favorites)
{
    Citys = new List<ACity>() 
    {
        new ACity() {tagger = Name ,ImageSource = ImageSource ,Name= Name, Author= Author, City = City}
    };
    ListBox.Items.Add(Citys);
}

If I do this in a listbox, it will fill with (Collection). Is there a way to do this in a listbox, passing images buttons strings in a listbox row?

Upvotes: 1

Views: 2206

Answers (1)

saamorim
saamorim

Reputation: 3905

See the example from the MSDN ItemsControl.ItemTemplate

<ListBox Width="400" Margin="10"
         ItemsSource="{Binding Source={StaticResource myTodoList}}">
   <ListBox.ItemTemplate>
     <DataTemplate>
       <StackPanel>
         <TextBlock Text="{Binding Path=TaskName}" />
         <TextBlock Text="{Binding Path=Description}"/>
         <TextBlock Text="{Binding Path=Priority}"/>
       </StackPanel>
     </DataTemplate>
   </ListBox.ItemTemplate>
 </ListBox>

It should be pretty straight forward to match with your example.

Upvotes: 2

Related Questions