Skip to content

MenuListItem

A menu item with a list of (string) values, from which one can be selected using the left/right arrow keys. You can also select a menu list item by pressing enter, which will trigger a separate event that you can listen for.


// A list (of strings) containing all selectable values.
// Note: At least one value must be provided.
List<string> values = new List<string>() {
"Option 1",
"Option 2",
"Option 3"
};
// Specify the index which will be used when the item is visible by default.
// Value must be a valid index value for the given values list.
int currentIndex = 0; // ("Option 1")
MenuListItem item = new MenuListItem("Item Text", values, currentIndex, "Item description");
// Add a menu item to a menu:
menu.AddMenuItem(item);

List items raise two different events: one when the value changes, and one when the item is pressed.

MenuListItem timeOfDay = new MenuListItem("Time", new List<string>() { "Morning", "Noon", "Night" }, 0, "Pick a time of day.");
menu.AddMenuItem(timeOfDay);
// Fires every time the user presses left or right on the item.
menu.OnListIndexChange += (_menu, _listItem, _oldIndex, _newIndex, _itemIndex) =>
{
if (_listItem == timeOfDay)
{
Debug.WriteLine($"Preview: {_listItem.ListItems[_newIndex]}");
}
};
// Fires when the user presses select on the item.
menu.OnListItemSelect += (_menu, _listItem, _listIndex, _itemIndex) =>
{
if (_listItem == timeOfDay)
{
ApplyTimeOfDay(_listItem.GetCurrentSelection());
}
};

ListItems is a normal List<string>, so you can change it at any time. Remember to keep ListIndex in range when you do.

item.ListItems = newValues;
item.ListIndex = 0;


Section titled “MenuListItem(string text, List<string> items, int index)”

Creates a list item without a description.

Parameter Type Description
text string The text displayed on the left side of the item.
items List<string> The selectable values. At least one value must be provided.
index int The index that is selected by default. Must be a valid index for items.

Section titled “MenuListItem(string text, List<string> items, int index, string description)”

Creates a list item with a description.

Parameter Type Description
text string The text displayed on the left side of the item.
items List<string> The selectable values. At least one value must be provided.
index int The index that is selected by default. Must be a valid index for items.
description string The description shown below the menu while this item is selected.

Property Type Default value Description Optional
ListIndex int 0 The currently selected list index. No
ListItems List<string> - A list holding a collection of strings which can be selected through this menu list item. At least one string must be present in this list. No
HideArrowsWhenNotSelected boolean false Hides the left & right arrows when the menu list item is not currently highlighted. Yes
ShowOpacityPanel boolean false Shows the Opacity Panel. Yes
ShowColorPanel boolean false Shows the Color Panel. Yes
ColorPanelColorType ColorPanelType ColorPanelType.Hair Shows the Color Panel. Yes
ItemsCount int 0 Returns how many ListItems there are in this MenuListItem. Yes


This function does not have any parameters.

Type Description
string Returns the currently selected ListItem value, or null if ListIndex is out of range.
string selected = item.GetCurrentSelection();
// This is the same as:
string alsoSelected = item.ListItems[item.ListIndex];

Color panels are shown below the menu, right under the item’s description text (if present).

Type Default Example
ColorPanelType.Hair Yes Hair color panel
ColorPanelType.Makeup No Makeup color panel

Opacity panels are also shown below the menu, right under the item’s description text (if present).

Opacity panel