SelectionList / SelectionListItem

April 9, 2026 · View on GitHub

A multi-select list control with image, title, subtitle, and timestamp support per item. Shows a selection-count header when items are selected and an empty-state message when the list is empty.

Basic usage

<SelectionList>
    <SelectionListItem Title="Alice Johnson"
                       Subtitle="alice@example.com"
                       Timestamp="Today, 9:41 AM" />
    <SelectionListItem Title="Bob Smith"
                       Subtitle="bob@example.com"
                       Timestamp="Yesterday" />
</SelectionList>

SelectionList properties

PropertyTypeDefaultDescription
EmptyMessagestring"No items found"Text shown when the list has no items
OrientationOrientationVerticalLayout direction of the items panel
ImageMemberBindingBindingBase?Binding path for the image when using ItemsSource
TitleMemberBindingBindingBase?Binding path for the title
SubtitleMemberBindingBindingBase?Binding path for the subtitle
TimestampMemberBindingBindingBase?Binding path for the timestamp
ImageTemplateIDataTemplate?Data template for the image area

Inherits all ListBox properties (ItemsSource, SelectedItems, SelectionMode, etc.). Default selection mode is Multiple | Toggle.

SelectionListItem properties

PropertyTypeDescription
Titlestring?Primary label
Subtitlestring?Secondary text below the title
Timestampstring?Timestamp text shown on the right
ImageIImage?Image shown on the left
ImageTemplateIDataTemplate?Data template for the image area

Data-bound list

<SelectionList ItemsSource="{Binding Contacts}"
               TitleMemberBinding="{Binding Name}"
               SubtitleMemberBinding="{Binding Email}"
               TimestampMemberBinding="{Binding LastSeen}"
               EmptyMessage="No contacts found">
    <SelectionList.ImageTemplate>
        <DataTemplate DataType="vm:ContactViewModel">
            <Ellipse Width="36" Height="36"
                     Fill="{DynamicResource AccentColor}" />
        </DataTemplate>
    </SelectionList.ImageTemplate>
</SelectionList>

Reading selected items

var selected = selectionList.SelectedItems?.Cast<MyModel>().ToList();

Horizontal layout

<SelectionList Orientation="Horizontal"
               ItemsSource="{Binding Tags}"
               TitleMemberBinding="{Binding Name}" />

Custom empty state

<SelectionList EmptyMessage="No results match your search." />