/// <summary> /// Add a menu item directly. /// </summary> /// <param name="text">Text to display on the menu item.</param> /// <param name="value">Value selected by the menu item.</param> public void AddDropdownItem(string text, T value) { if (itemMap.ContainsKey(value)) { throw new ArgumentException($"The item {value} already exists in this {nameof(Dropdown<T>)}."); } var newItem = new DropdownMenuItem <T>(text, value, () => { if (!Current.Disabled) { Current.Value = value; } Menu.State = MenuState.Closed; }); Menu.Add(newItem); itemMap[value] = newItem; }
/// <summary> /// Shows an item from this <see cref="DropdownMenu"/>. /// </summary> /// <param name="item">The item to show.</param> public void HideItem(DropdownMenuItem <T> item) => Children.FirstOrDefault(c => c.Item == item)?.Hide();
/// <summary> /// Hides an item from this <see cref="DropdownMenu"/> /// </summary> /// <param name="item"></param> public void ShowItem(DropdownMenuItem <T> item) => Children.FirstOrDefault(c => c.Item == item)?.Show();
/// <summary> /// Selects an item from this <see cref="DropdownMenu"/>. /// </summary> /// <param name="item">The item to select.</param> public void SelectItem(DropdownMenuItem <T> item) { Children.OfType <DrawableDropdownMenuItem>().ForEach(c => c.IsSelected = c.Item == item); }