ListBox binds to the people collection, and sets the DataTemplate to use for displaying each item
<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}"/>
</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"
});
}
}
}
Related examples in the same category