I've got a class FruitViewModel
. It describes ViewModels for ListBox
items.
<ListBox ItemsSource="{Binding Fruits}">
And I've got
class BananaViewModel : FruitViewModel
and
class AppleViewModel : FruitViewModel
Fruits
contains BananaViewModel
s and AppleViewModel
s which is bound to ItemsSource
.
How can I make different templates for apples and bananas? They should be in one list but have different templates
You can define DataTemplates that apply to any instance of a specific type by specifying the DataType
without an x:Key
. Using this method you don't assign anything to ItemTemplate
- the templates are applied automatically.
<ListBox ItemsSource="{Binding Path=MixedList}"> <ListBox.Resources> <DataTemplate DataType="{x:Type local:BananaViewModel}"> <TextBlock Text="{Binding Name}" Foreground="Yellow"/> </DataTemplate> <DataTemplate DataType="{x:Type local:AppleViewModel}"> <TextBlock Text="{Binding Name}" Foreground="Red"/> </DataTemplate> </ListBox.Resources> </ListBox>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With