Use Data Templates to Display Bound Data
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:WpfApplication1="clr-namespace:WpfApplication1" Title="WPF" Height="300" Width="300"> <Window.Resources> <WpfApplication1:People x:Key="people"/> <DataTemplate x:Key="personTemplate"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="80"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <StackPanel> <TextBlock Style="{StaticResource lblStyle}" Text="First Name" /> <TextBlock Style="{StaticResource dataStyle}" Text="{Binding Path=FirstName}"/> <TextBlock Style="{StaticResource lblStyle}" Text="Age" /> <TextBlock Style="{StaticResource dataStyle}" Text="{Binding Path=Age}" /> </StackPanel> <Image Margin="4" Grid.Column="1" Width="96" Height="140" Source="{Binding Path=Photo}"/> </Grid> </DataTemplate> </Window.Resources> <Grid> <ListBox ItemsSource="{Binding Source={StaticResource people}}" ItemTemplate="{StaticResource personTemplate}"/> <ListBox Margin="10" ItemsSource="{Binding Source={StaticResource people}}"/> </Grid> </Window> //File:Window.xaml.cs using System.Collections.ObjectModel; namespace WpfApplication1 { public class Employee { public string FirstName { get; set; } public int Age { get; set; } public string Photo { get; set; } public override string ToString() { return FirstName; } } public class People : Collection<Employee> { public People() { this.Add(new Employee() { FirstName = "A", Age = 26, Photo = "a.png" }); this.Add(new Employee() { FirstName = "C", Age = 24, Photo = "c.png" }); } } }