Back to results for “CollectionView”
.NET MAUI › Controls & Views

What is a DataTemplateSelector and when is it useful?

Intermediate

Answer

A DataTemplateSelector chooses a DataTemplate at runtime based on the bound item. Override OnSelectTemplate to return different templates for different data types or states. It's useful for heterogeneous lists—chat bubbles for sent vs received messages, or different cards per item category.
public class MessageTemplateSelector : DataTemplateSelector
{
    public DataTemplate Incoming { get; set; }
    public DataTemplate Outgoing { get; set; }
    protected override DataTemplate OnSelectTemplate(object item, BindableObject c)
        => ((Message)item).IsMine ? Outgoing : Incoming;
}
Real-world example A chat screen renders the current user's messages right-aligned and others' left-aligned using one CollectionView and a template selector.

Common follow-ups: Where do you assign a template selector? | Can it switch on item type?