/// <summary> /// Присоединяет элементы коллекции если они еще не присоеденены к контейнеру элементов /// </summary> /// <remarks> /// Attach items if they not attached already /// </remarks> private void AttachItems() { bool appropriateTypeOfItemIsNotSet = false; foreach (object item in Items) { if (item.GetType().IsEnum&& !appropriateTypeOfItemIsNotSet) { appropriateTypeOfItemIsNotSet = false; var itemContainer = GetItemContainer(item); if (itemContainer != null) { UIEnumSwitchItem enumSwitchItem = new UIEnumSwitchItem(); Binding IsSelectedBinding = new Binding("IsSelected") { Mode = BindingMode.TwoWay, Source = itemContainer }; enumSwitchItem.SetBinding(UIEnumSwitchItem.IsSelectedProperty, IsSelectedBinding); PrepareContainerForItemOverride(enumSwitchItem, item); } } else { appropriateTypeOfItemIsNotSet = true; continue; } } if (appropriateTypeOfItemIsNotSet) { throw new InvalidOperationException("One or more elements in Items collection is not Enun derived type!"); } }
/// <summary> /// Возвращает контейнер для заданного элемента. /// </summary> /// <remarks> /// Returns the element used to display the given item. /// </remarks> private UIEnumSwitchItem GetItemContainer(object item) { UIEnumSwitchItem itemContainer = item as UIEnumSwitchItem; if (itemContainer == null) { UpdateLayout(); itemContainer = ItemContainerGenerator.ContainerFromItem(item) as UIEnumSwitchItem; } return(itemContainer); }
/// <summary> /// Возвращает true если элемент является элементом по умолчанию (первый в коллекции элементов) /// </summary> /// <remarks> /// Returns true if item is first in ItemsContainer collection /// </remarks> public bool IsItemIsDefault(UIEnumSwitchItem item) => ElementIndex(item) == 0;
/// <summary> /// Возвращает индекс в коллекции элементов ItemsContainer /// </summary> /// <remarks> /// Returns index of item in ItemsContainer collection /// </remarks> private int ElementIndex(UIEnumSwitchItem item) { return(ItemContainerGenerator.IndexFromContainer(item)); }