Как и другие пользователи предложили в комментариях, идеальный способ сделать это с помощью DataTemplateSelector
.
Прежде всего, вам нужно получить класс DataTemplateSelector
, создать свой собственный и переопределитьметод SelectTemplateCore
:
public class SampleDataTemplateSelector : DataTemplateSelector
{
protected override DataTemplate SelectTemplateCore(object item, DependencyObject container)
{
if (item != null && container != null && <<item is a specific object>>)
{
// Put your logic code here in order to determine what case is the right one
if (<<case 1>>) return SampleDataTemplate1;
else if (<<case 2>>) return SampleDataTemplate2;
//…
}
}
}
Затем поместите эти ресурсы в свой App.xaml (или в ресурсы своей страницы):
<Application.Resources>
<templateSelectorNamespace:SampleDataTemplateSelector x:Key="SampleTemplateSelector"/>
<DataTemplate x:Key="SampleDataTemplate1">
<Image Source="Assets/Image1.png"/>
</DataTemplate>
<DataTemplate x:Key="SampleDataTemplate2">
<Image Source="Assets/Image2.png"/>
</DataTemplate>
</Application.Resources>
Затем на своей странице просто используйтеэто с производным элементом управления ItemsControl.Вот способ использовать его, например, в ListView:
<ListView ItemsSource="{x:Bind ViewModel.Elements, Mode=OneWay}" ItemTemplateSelector="{StaticResource SampleTemplateSelector}" HorizontalContentAlignment="Stretch"/>
С уважением