Cell Types
Shiny.Maui.TableView provides 14 built-in cell types. All cells inherit from CellBase and share a common set of properties for titles, descriptions, icons, borders, and selection behavior.
Common Cell Properties
Section titled “Common Cell Properties”All cells inherit these properties from CellBase:
| Property | Type | Default | Description |
|---|---|---|---|
Title | string | "" | Primary text |
TitleColor | Color? | null | Title color |
TitleFontSize | double | -1 | Title font size (-1 = use global) |
TitleFontFamily | string? | null | Title font family |
TitleFontAttributes | FontAttributes? | null | Title styling (Bold, Italic, None) |
Description | string | "" | Subtitle text below title |
DescriptionColor | Color? | null | Description color |
DescriptionFontSize | double | -1 | Description font size |
DescriptionFontFamily | string? | null | Description font family |
DescriptionFontAttributes | FontAttributes? | null | Description styling |
HintText | string | "" | Hint text to the right of the title |
HintTextColor | Color? | null | Hint color |
HintTextFontSize | double | -1 | Hint font size |
HintFontFamily | string? | null | Hint font family |
HintFontAttributes | FontAttributes? | null | Hint styling |
IconSource | ImageSource? | null | Icon on the left |
IconSize | double | -1 | Icon dimensions |
IconRadius | double | -1 | Icon corner radius |
CellBackgroundColor | Color? | null | Cell background |
SelectedColor | Color? | null | Background color when tapped |
IsSelectable | bool | true | Whether the cell responds to taps |
IsEnabled | bool | true | Disabled cells are dimmed (0.4 opacity) |
CellHeight | double | -1 | Fixed cell height |
BorderColor | Color? | null | Cell border color |
BorderWidth | double | -1 | Cell border width |
BorderRadius | double | -1 | Cell border corner radius |
LabelCell
Section titled “LabelCell”Displays a title with an optional value text on the right. Use for read-only display and information rows.
<tv:LabelCell Title="Version" ValueText="1.0.0" Description="Latest stable release" />| Property | Type | Default | Description |
|---|---|---|---|
ValueText | string | "" | Text displayed on the right side |
ValueTextColor | Color? | null | Value text color |
ValueTextFontSize | double | -1 | Value font size |
ValueTextFontFamily | string? | null | Value font family |
ValueTextFontAttributes | FontAttributes? | null | Bold, Italic, or None |
SwitchCell
Section titled “SwitchCell”A cell with a toggle switch for boolean values.
<tv:SwitchCell Title="Wi-Fi" On="{Binding WifiEnabled, Mode=TwoWay}" OnColor="#34C759" />| Property | Type | Default | Description |
|---|---|---|---|
On | bool | false | Switch state (two-way bindable) |
OnColor | Color? | null | Switch color when on |
CheckboxCell
Section titled “CheckboxCell”A cell with a native checkbox control.
<tv:CheckboxCell Title="Accept Terms" Checked="{Binding Accepted, Mode=TwoWay}" AccentColor="#007AFF" />| Property | Type | Default | Description |
|---|---|---|---|
Checked | bool | false | Checkbox state (two-way bindable) |
AccentColor | Color? | null | Checkbox color |
SimpleCheckCell
Section titled “SimpleCheckCell”A cell that shows/hides a checkmark on tap. Useful for selection lists without a native checkbox control.
<tv:SimpleCheckCell Title="Option A" Checked="{Binding OptionA, Mode=TwoWay}" AccentColor="Green" />| Property | Type | Default | Description |
|---|---|---|---|
Checked | bool | false | Check state (two-way bindable) |
Value | object? | null | Associated value |
AccentColor | Color? | null | Checkmark color |
RadioCell
Section titled “RadioCell”Radio button selection within a section. Cells within the same section are mutually exclusive. Use the RadioCell.SelectedValue attached property on the parent TableSection to bind the selected value.
<tv:TableSection Title="Theme" tv:RadioCell.SelectedValue="{Binding SelectedTheme, Mode=TwoWay}"> <tv:RadioCell Title="Light" Value="Light" /> <tv:RadioCell Title="Dark" Value="Dark" /> <tv:RadioCell Title="System" Value="System" /></tv:TableSection>| Property | Type | Default | Description |
|---|---|---|---|
Value | object? | null | The value this radio button represents |
AccentColor | Color? | null | Radio indicator color |
CommandCell
Section titled “CommandCell”A tappable cell with a disclosure arrow that executes a command. Inherits all properties from LabelCell.
<tv:CommandCell Title="Privacy Policy" ValueText="View" Command="{Binding PrivacyCommand}" ShowArrow="True" KeepSelectedUntilBack="True" />| Property | Type | Default | Description |
|---|---|---|---|
Command | ICommand? | null | Command to execute on tap |
CommandParameter | object? | null | Parameter passed to command |
ShowArrow | bool | true | Show disclosure arrow |
KeepSelectedUntilBack | bool | false | Keep highlight until page reappears |
ButtonCell
Section titled “ButtonCell”A full-width button-style cell for primary or destructive actions.
<tv:ButtonCell Title="Sign Out" Command="{Binding SignOutCommand}" ButtonTextColor="Red" />| Property | Type | Default | Description |
|---|---|---|---|
Command | ICommand? | null | Command to execute |
CommandParameter | object? | null | Parameter passed to command |
ButtonTextColor | Color? | null | Button text color |
TitleAlignment | TextAlignment | Center | Text alignment |
EntryCell
Section titled “EntryCell”A cell with an inline text entry field.
<tv:EntryCell Title="Email" ValueText="{Binding Email, Mode=TwoWay}" Placeholder="user@example.com" Keyboard="Email" />| Property | Type | Default | Description |
|---|---|---|---|
ValueText | string | "" | Entry text (two-way bindable) |
Placeholder | string | "" | Placeholder text |
PlaceholderColor | Color? | null | Placeholder color |
Keyboard | Keyboard | Default | Keyboard type (Default, Email, Numeric, Telephone, Url, Chat) |
IsPassword | bool | false | Mask input |
MaxLength | int | -1 | Max characters (-1 = unlimited) |
TextAlignment | TextAlignment | End | Text alignment |
CompletedCommand | ICommand? | null | Command executed on return key |
ValueTextColor | Color? | null | Entry text color |
DatePickerCell
Section titled “DatePickerCell”Tapping anywhere on the cell opens the native date picker dialog.
<tv:DatePickerCell Title="Birthday" Date="{Binding BirthDate, Mode=TwoWay}" Format="D" MinimumDate="1900-01-01" MaximumDate="2025-12-31" />| Property | Type | Default | Description |
|---|---|---|---|
Date | DateTime? | null | Selected date (two-way bindable) |
InitialDate | DateTime | 2000-01-01 | Date shown in picker when no date is set |
MinimumDate | DateTime | 1900-01-01 | Earliest selectable date |
MaximumDate | DateTime | 2100-12-31 | Latest selectable date |
Format | string | "d" | Date format string ("d", "D", or custom) |
ValueTextColor | Color? | null | Value text color |
TimePickerCell
Section titled “TimePickerCell”Tapping anywhere on the cell opens the native time picker dialog.
<tv:TimePickerCell Title="Alarm" Time="{Binding AlarmTime, Mode=TwoWay}" Format="T" />| Property | Type | Default | Description |
|---|---|---|---|
Time | TimeSpan | 00:00:00 | Selected time (two-way bindable) |
Format | string | "t" | Time format string ("t", "T", or custom) |
ValueTextColor | Color? | null | Value text color |
TextPickerCell
Section titled “TextPickerCell”Tapping the cell opens a native dropdown/spinner picker for selecting from a list of items.
<tv:TextPickerCell Title="Color" ItemsSource="{Binding Colors}" SelectedIndex="{Binding SelectedColorIndex, Mode=TwoWay}" PickerTitle="Choose a color" />| Property | Type | Default | Description |
|---|---|---|---|
ItemsSource | IList? | null | List of items |
SelectedIndex | int | -1 | Selected index (two-way bindable) |
SelectedItem | object? | null | Selected item (two-way bindable) |
DisplayMember | string? | null | Property name for display text |
PickerTitle | string? | null | Title shown on picker dialog |
SelectedCommand | ICommand? | null | Command executed on selection |
ValueTextColor | Color? | null | Value text color |
NumberPickerCell
Section titled “NumberPickerCell”Tapping the cell opens a prompt dialog for numeric input with min/max constraints.
<tv:NumberPickerCell Title="Font Size" Number="{Binding FontSize, Mode=TwoWay}" Min="8" Max="72" Unit="pt" />| Property | Type | Default | Description |
|---|---|---|---|
Number | int? | null | Selected number (two-way bindable) |
Min | int | 0 | Minimum value |
Max | int | 9999 | Maximum value |
Unit | string | "" | Unit suffix displayed after the number (e.g., “pt”, “px”) |
PickerTitle | string | "Enter a number" | Dialog title |
SelectedCommand | ICommand? | null | Command executed on selection |
ValueTextColor | Color? | null | Value text color |
PickerCell
Section titled “PickerCell”A full-page picker that navigates to a dedicated selection page on tap. Supports both single and multiple selection.
<!-- Single selection --><tv:PickerCell Title="Country" ItemsSource="{Binding Countries}" SelectionMode="Single" SelectedItem="{Binding SelectedCountry, Mode=TwoWay}" PageTitle="Select Country" ShowArrow="True" />
<!-- Multiple selection --><tv:PickerCell Title="Hobbies" ItemsSource="{Binding Hobbies}" SelectionMode="Multiple" MaxSelectedNumber="3" SelectedItems="{Binding SelectedHobbies, Mode=TwoWay}" PageTitle="Select Hobbies" />| Property | Type | Default | Description |
|---|---|---|---|
ItemsSource | IEnumerable? | null | Items to pick from |
SelectedItem | object? | null | Selected item (two-way, single mode) |
SelectedItems | IList? | null | Selected items (two-way, multiple mode) |
SelectionMode | SelectionMode | Single | Single or Multiple |
MaxSelectedNumber | int | 0 | Max selections (0 = unlimited) |
UsePickToClose | bool | false | Auto-close picker when max selections reached |
UseAutoValueText | bool | true | Auto-generate display text from selections |
DisplayMember | string? | null | Property name for display text |
SubDisplayMember | string? | null | Property name for subtitle text |
PageTitle | string | "Select" | Picker page title |
ShowArrow | bool | true | Show disclosure arrow |
KeepSelectedUntilBack | bool | false | Keep highlight until page returns |
SelectedCommand | ICommand? | null | Command executed on selection change |
AccentColor | Color? | null | Checkmark color on picker page |
CustomCell
Section titled “CustomCell”A cell that hosts any custom MAUI view in the accessory area.
<tv:CustomCell Title="Progress"> <tv:CustomCell.CustomContent> <ProgressBar Progress="0.75" /> </tv:CustomCell.CustomContent></tv:CustomCell>
<!-- Full-width custom content --><tv:CustomCell UseFullSize="True"> <tv:CustomCell.CustomContent> <Grid Padding="16"> <Label Text="Full-width custom layout" /> </Grid> </tv:CustomCell.CustomContent></tv:CustomCell>| Property | Type | Default | Description |
|---|---|---|---|
CustomContent | View? | null | Custom view to display |
UseFullSize | bool | false | Use full cell width for content (hides title/icon) |
Command | ICommand? | null | Command on tap |
LongCommand | ICommand? | null | Command on long press |
ShowArrow | bool | false | Show disclosure arrow |
KeepSelectedUntilBack | bool | false | Keep highlight until page returns |