Beispiel #1
0
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);

            if (this.GetSite() != null && this.ElementTree.Control is IItemsControl)
            {
                IItemsControl itemsControl = this.ElementTree.Control as IItemsControl;

                foreach (RadMenuItemBase item in itemsControl.Items)
                {
                    if (!object.ReferenceEquals(this, item) && item.IsPopupShown)
                    {
                        item.HideChildItems();
                    }
                }
            }

            if (!this.IsPopupShown)
            {
                this.ShowChildItems();
            }
            else if (!this.IsOnDropDown)
            {
                this.HideChildItems();
            }
        }
Beispiel #2
0
        protected virtual bool CheckCanProcessMnemonic(IItemsControl itemsControl, char keyData)
        {
            bool result = false;

            foreach (RadItem item in itemsControl.Items)
            {
                RadMenuItemBase menuItem = item as RadMenuItemBase;

                if (menuItem != null && menuItem.IsPopupShown)
                {
                    return(this.CheckCanProcessMnemonic(menuItem.DropDown, keyData));
                }

                if (IsMnemonic(keyData, item.Text))
                {
                    if (menuItem != null && menuItem.HasChildren)
                    {
                        result = false;
                    }
                    else
                    {
                        result = true;
                    }
                }
            }

            return(result);
        }
Beispiel #3
0
        protected override void OnDropDownClosed(RadPopupClosedEventArgs args)
        {
            base.OnDropDownClosed(args);

            RadMenuItemBase currentItem = this.GetSelectedItem() as RadMenuItemBase;

            if (currentItem != null)
            {
                currentItem.Deselect();
            }

            if (!(this.OwnerElement is RadMenuItemBase))
            {
                return;
            }

            RadMenuItemBase ownerMenuItem = this.OwnerElement as RadMenuItemBase;

            if (!(this.lastPressedKey == Keys.Escape) &&
                !ownerMenuItem.IsOnDropDown &&
                ownerMenuItem.ElementTree.Control is IItemsControl)
            {
                IItemsControl   ownerItemsControl = ownerMenuItem.ElementTree.Control as IItemsControl;
                RadMenuItemBase menuItemBase      = ownerItemsControl.GetSelectedItem() as RadMenuItemBase;

                if (!object.ReferenceEquals(menuItemBase, ownerMenuItem))
                {
                    return;
                }

                ownerMenuItem.Selected = false;
            }
        }
Beispiel #4
0
 internal static DataTemplate ResolveItemTemplate(this IItemsControl itemsControl, object item)
 {
     return(DataTemplateHelper.ResolveTemplate(
                itemsControl.ItemTemplate,
                itemsControl.ItemTemplateSelector,
                item
                ));
 }
Beispiel #5
0
        protected override void OnMouseLeave(EventArgs e)
        {
            base.OnMouseLeave(e);
            this.IsMouseDown = false;
            if (this.IsPopupShown)
            {
                return;
            }
            IItemsControl control = this.ElementTree.Control as IItemsControl;

            if (control == null || !object.ReferenceEquals((object)control.GetSelectedItem(), (object)this))
            {
                return;
            }
            this.Deselect();
        }
Beispiel #6
0
 public static void UpdateItemTemplateSelectorForDisplayMemberPath(this IItemsControl itemsControl, string displayMemberPath)
 {
     //If setting a non-empty displayMemberPath,
     if (!string.IsNullOrEmpty(displayMemberPath))
     {
         //and there is no existing ItemTemplateSelector, supply a DisplayMemberTemplateSelector
         if (itemsControl != null && (itemsControl.ItemTemplateSelector == null || itemsControl.ItemTemplateSelector is DisplayMemberTemplateSelector))
         {
             itemsControl.ItemTemplateSelector = new DisplayMemberTemplateSelector(displayMemberPath);
         }
     }
     //Otherwise we're setting the displayMemberPath to empty, so clear the existing DisplayMemberTemplateSelector
     else if (itemsControl?.ItemTemplateSelector is DisplayMemberTemplateSelector)
     {
         itemsControl.ItemTemplateSelector = null;
     }
 }
Beispiel #7
0
        private static void InitComponentLocator(UIComponent component, UIComponentMetadata metadata, FindAttribute findAttribute)
        {
            ComponentScopeLocateOptions   locateOptions = CreateScopeLocateOptions(metadata, findAttribute);
            IComponentScopeLocateStrategy strategy      = findAttribute.CreateStrategy(metadata);

            component.ScopeSource = findAttribute.ScopeSource;

            IItemsControl itemsControl = component as IItemsControl;

            if (itemsControl != null)
            {
                IFindItemAttribute       findItemAttribute       = GetPropertyFindItemAttribute(metadata);
                IItemElementFindStrategy itemElementFindStrategy = findItemAttribute.CreateStrategy(metadata);
                itemsControl.Apply(itemElementFindStrategy);
            }

            component.ScopeLocator = new StrategyScopeLocator(component, strategy, locateOptions);
        }
Beispiel #8
0
        protected virtual bool CheckCanProcessMnemonic(IItemsControl itemsControl, char keyData)
        {
            bool flag = false;

            foreach (RadItem radItem in (RadItemCollection)itemsControl.Items)
            {
                RadMenuItemBase radMenuItemBase = radItem as RadMenuItemBase;
                if (radMenuItemBase != null && radMenuItemBase.IsPopupShown)
                {
                    return(this.CheckCanProcessMnemonic((IItemsControl)radMenuItemBase.DropDown, keyData));
                }
                if (Control.IsMnemonic(keyData, radItem.Text))
                {
                    flag = radMenuItemBase == null || !radMenuItemBase.HasChildren;
                }
            }
            return(flag);
        }
Beispiel #9
0
        public static void ChangeStyle <TItem>(this IItemsControl <TItem> itemsControl, DependencyProperty styleProperty, Style oldStyle, Style newStyle) where TItem : FrameworkElement
        {
            if (newStyle != null)
            {
                VerifyStyleType(newStyle, typeof(TItem));
            }

            if (oldStyle != null)
            {
                foreach (var frameworkElement in itemsControl.ActualItems)
                {
                    frameworkElement.ChangeItemStyle(styleProperty, oldStyle, newStyle);
                }
            }
            else if (newStyle != null)
            {
                foreach (var frameworkElement in itemsControl.ActualItems)
                {
                    frameworkElement.ApplyItemStyle(styleProperty, newStyle);
                }
            }
        }
Beispiel #10
0
 public RadItemsControl()
 {
     this.itemsControlImpl = this.GetItemsControlImpl();
     this.itemsControlImpl.ItemSelected   += new ItemSelectedEventHandler(this.OnItemsControlImpl_ItemSelected);
     this.itemsControlImpl.ItemDeselected += new ItemSelectedEventHandler(this.OnItemsControlImpl_ItemDeselected);
 }