Когда есть разные наборы изображений для каждого элемента списка, вы должны добавить еще один ListBox внутри основного и поместить элемент управления Image в качестве ItemTemplate.
Но когда у вас есть только несколько наборов изображений (например, с2, 3 и 4 статических изображения) для всего списка и для отображения одного из них для каждого элемента списка вы можете подготовить 3 шаблона StaBPanel внутри listBoxItem и изменить его видимость в зависимости от некоторого свойства из DataSource.Это значение свойства должно быть преобразовано в член перечисления Visibility.
Например.когда эти изображения должны зависеть от целочисленного ImagesSet
свойства DataSource:
<StackPanel Height="100" Width="100" Visibility={Binding ImagesSet, Converter={StaticResources ImagesSetToVisibility}, ConverterParameter=2}>
<Image Height="100"/>
<Image Height="100"/>
</StackPanel>
<StackPanel Height="100" Width="100" Visibility={Binding ImagesSet, Converter={StaticResources ImagesSetToVisibility}, ConverterParameter=3}>
<Image Height="100"/>
<Image Height="100"/>
<Image Height="100"/>
</StackPanel>
<StackPanel Height="100" Width="100" Visibility={Binding ImagesSet, Converter={StaticResources ImagesSetToVisibility}, ConverterParameter=4}>
<Image Height="100"/>
<Image Height="100"/>
<Image Height="100"/>
<Image Height="100"/>
</StackPanel>
Преобразователь должен проверить, равно ли значение параметру, и вернуть Visibility.Visbile или Visibility.Collapsed:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((int)value) == ((int)parameter) ? Visibility.Visible : Visibility.Collapsed;
}