Exemplo n.º 1
0
        /// <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!");
            }
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
 /// <summary>
 /// Возвращает true если элемент является элементом по умолчанию (первый в коллекции элементов)
 /// </summary>
 /// <remarks>
 /// Returns true if item is first in ItemsContainer collection
 /// </remarks>
 public bool IsItemIsDefault(UIEnumSwitchItem item) => ElementIndex(item) == 0;
Exemplo n.º 4
0
 /// <summary>
 /// Возвращает индекс в коллекции элементов ItemsContainer
 /// </summary>
 /// <remarks>
 /// Returns index of item in ItemsContainer collection
 /// </remarks>
 private int ElementIndex(UIEnumSwitchItem item)
 {
     return(ItemContainerGenerator.IndexFromContainer(item));
 }