Exemplo n.º 1
0
 public PopupMenuSeperator() : base(null, PopupMenu.CreateSeperator(null))
 {
 }
Exemplo n.º 2
0
        public PopupMenuItem(string iconUrl, bool addIconMargin, params UIElement[] elements)
        {
            //this.Margin = new Thickness(0, -1, 0, 0);
            CloseOnClick = true;

            // Add right sided image
            _imageRight = new Image
            {
                MinWidth = 0,
                Margin   = new Thickness(0, -3, 0, -3),
            };
            DockPanel.SetDock(_imageRight, Dock.Right);
            this.Children.Add(_imageRight);

            // Add left icon margin
            if (addIconMargin)
            {
                _imageLeft = new Image
                {
                    MinWidth = 0,
                    Margin   = new Thickness(0, -3, 3, -3),
                };

                if (!string.IsNullOrEmpty(iconUrl))
                {
                    ImagePath = iconUrl;
                }

                _verticalMargin = new Rectangle
                {
                    Width  = 0,
                    Margin = new Thickness(0, -3, 3, -3),
                    Fill   = PopupMenu.MakeColorGradient(Color.FromArgb(4, 0, 0, 0), Color.FromArgb(100, 255, 255, 255), 0)
                };

                if (elements != null && elements.Length > 0 && elements[0] is TextBlock)
                {
                    _textBlock = elements[0] as TextBlock;
                }

                DockPanel.SetDock(_textBlock, Dock.Top);

                this.Children.Add(_imageLeft);
                this.Children.Add(_verticalMargin);
            }

            // Add title
            this.Children.Add(_textBlock);

            // Add custom elements if any
            if (elements != null)
            {
                foreach (UIElement element in elements)
                {
                    if (element != null && element != _textBlock)
                    {
                        if ((element as FrameworkElement).Parent is Panel)
                        {
                            ((element as FrameworkElement).Parent as Panel).Children.Remove(element);
                        }
                        this.Children.Add(element);
                        DockPanel.SetDock(element, Dock.Top);
                    }
                }
            }

            // Close parent popup on click
            this.MouseLeftButtonUp += (sender, e) =>
            {
                if ((sender is PopupMenuItem) && (sender as PopupMenuItem).CloseOnClick)
                {
                    //PopupMenu.CloseAllOpenMenus();
                }
            };
        }