예제 #1
0
        void CreateRibbon()
        {
            this.barManager = new BarManager();
            BarButtonItem staticItem = new BarButtonItem()
            {
                Name = "StaticItem", Content = "StaticItem"
            };

            this.barManager.Items.Add(staticItem);
            this.ribbonControl   = new RibbonControl();
            this.defaultCategory = new RibbonDefaultPageCategory();
            RibbonPage staticPage = new RibbonPage()
            {
                Caption = "StaticPage"
            };
            RibbonPageGroup staticItemLinkGroup = new RibbonPageGroup()
            {
                Caption = "StaticItemLinkGroup"
            };

            staticItemLinkGroup.ItemLinks.Add(staticItem.CreateLink());
            staticPage.Groups.Add(staticItemLinkGroup);
            this.defaultCategory.Pages.Add(staticPage);
            this.ribbonControl.Categories.Add(defaultCategory);
            this.barManager.Child = ribbonControl;
            this.window.Content   = barManager;
        }
예제 #2
0
        private void BuildRibbonMenu(RibbonDefaultPageCategory pageCategory)
        {
            pageCategory.Pages.Clear();

            List <SysMenuItem> menu = ws.UseService(s => s.GetSysMenuItems("")).OrderBy(c => c.ITEM_SEQ).ToList();
            var roots = menu.Where(s => s.PARENT_PKNO == "0").OrderBy(c => c.ITEM_SEQ).ToList();

            foreach (var root in roots)     //大类,根目录
            {
                RibbonPage ribbonPage = new RibbonPage();
                ribbonPage.Caption = root.ITEM_TITLE;

                List <string> groups = menu.Where(c => c.PARENT_PKNO == root.PKNO).Select(c => c.ITEM_TYPE).Distinct().ToList();

                foreach (var group in groups)  //增加组
                {
                    RibbonPageGroup ribbonGroup = new RibbonPageGroup();
                    ribbonGroup.Caption = group;

                    var items = menu.Where(c => c.PARENT_PKNO == root.PKNO && c.ITEM_TYPE == group).ToList();

                    foreach (SysMenuItem item in items)
                    {
                        string path = "";
                        if (!string.IsNullOrEmpty(item.PAGE_ID))
                        {
                            string[] count = item.PAGE_ID.Split('.');
                            path = count.Last();
                        }
                        BarButtonItem newBtn = new BarButtonItem()
                        {
                            Content     = item.ITEM_TITLE,
                            RibbonStyle = RibbonItemStyles.Large,
                            Description = item.PAGE_ID,
                            Tag         = item.ASSEMBLY_NAME,

                            // Glyph = new BitmapImage(new Uri(@"dm.png", UriKind.Relative)),
                            LargeGlyph         = new BitmapImage(new Uri(@"images/icon/DocumentManageView.png", UriKind.Relative)),
                            BarItemDisplayMode = BarItemDisplayMode.ContentAndGlyph,
                        };
                        if (path != "")
                        {
                            string sFilePath = @"images/icon/" + path + ".png";
                            if (File.Exists(sFilePath))
                            {
                                newBtn.Glyph      = new BitmapImage(new Uri(sFilePath, UriKind.Relative));
                                newBtn.LargeGlyph = new BitmapImage(new Uri(sFilePath, UriKind.Relative));
                            }
                        }
                        newBtn.ItemClick += MainWindow_ItemClick;
                        ribbonGroup.Items.Add(newBtn);
                    }

                    ribbonPage.Groups.Add(ribbonGroup);
                }

                pageCategory.Pages.Add(ribbonPage);
            }
        }
예제 #3
0
        public MainWindow()
        {
            EventLogger.Setting(true, "BFM_MES3.0", "", 365, -1, -1, 5, "", "");

            InitializeComponent();

            dicAssemblies = new Dictionary <string, Assembly>(0);

            RibbonDefaultPageCategory pageCategory = this.ribbonControl.Categories.FirstOrDefault() as RibbonDefaultPageCategory;

            BuildRibbonMenu(pageCategory);

            dockLayoutManager.DockItemClosed -= DockLayoutManager_DockItemClosed;
            dockLayoutManager.DockItemClosed += DockLayoutManager_DockItemClosed;

            dockLayoutManager.DockItemClosing -= DockLayoutManagerOnDockItemClosing;
            dockLayoutManager.DockItemClosing += DockLayoutManagerOnDockItemClosing;
            ShowStartUpPage();
        }
예제 #4
0
        void CreateDynamicPage(string name, object content, out BarItem barItem, out RibbonPage page, out RibbonPageGroup group)
        {
            BarManager                barManager    = new BarManager();
            RibbonControl             ribbonControl = new RibbonControl();
            RibbonDefaultPageCategory pageCategory  = new RibbonDefaultPageCategory();

            barManager.Child = ribbonControl;
            ribbonControl.Categories.Add(pageCategory);
            barItem = new BarButtonItem()
            {
                Name = name, Content = content
            };
            page  = new RibbonPage();
            group = new RibbonPageGroup();
            barManager.Items.Add(barItem);
            group.ItemLinks.Add(barItem.CreateLink());
            page.Groups.Add(group);
            pageCategory.Pages.Add(page);
            this.ribbonManager.Merge(this.defaultCategory, barManager, ribbonControl);
        }
예제 #5
0
        protected override void Adapt(IRegion region, RibbonControl regionTarget)
        {
            region.Views.CollectionChanged += (s, e) =>
            {
                if (e.Action == NotifyCollectionChangedAction.Add)
                {
                    foreach (object element in e.NewItems)
                    {
                        if (element is RibbonPageCategory)
                        {
                            RibbonPageCategory category = (RibbonPageCategory)element;
                            if (category.Pages.Count == 0)
                            {
                                return;
                            }

                            RibbonPageCategory realCategory = regionTarget.Items.Where(item =>
                            {
                                if (item is RibbonPageCategory && ((RibbonPageCategory)item).Caption == category.Caption)
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPageCategory;
                            if (realCategory != null)
                            {
                                RibbonPage page     = category.Pages.First();
                                RibbonPage realPage = realCategory.Pages.Where(item =>
                                {
                                    if (item.Caption.ToString() == page.Caption.ToString())
                                    {
                                        return(true);
                                    }
                                    return(false);
                                }).FirstOrDefault() as RibbonPage;
                                if (realPage != null)
                                {
                                    realCategory.Pages.Remove(realPage);

                                    foreach (var group in page.Groups)
                                    {
                                        realPage.Groups.Add(group);
                                    }

                                    realCategory.Pages.Add(realPage);
                                    regionTarget.SelectedPage = realPage;
                                }
                                else
                                {
                                    realCategory.Pages.Add(page);
                                    regionTarget.SelectedPage = page;
                                }
                            }
                            else
                            {
                                regionTarget.Items.Add(category);
                                regionTarget.SelectedPage = category.Pages.First();
                            }
                        }
                        else if (element is BarButtonItem)
                        {
                            RibbonDefaultPageCategory realCategory = regionTarget.Items.Where(item => item is RibbonDefaultPageCategory).First() as RibbonDefaultPageCategory;
                            RibbonPage realPage = realCategory.Pages.Where(item =>
                            {
                                if (item.Caption.ToString() == UIConstants.MainCommandPageName)
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPage;
                            RibbonPageGroup realGroup = realPage.Groups.Where(item =>
                            {
                                if (item.Caption.ToString() == UIConstants.MainCommandGroupName)
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPageGroup;
                            if (realGroup != null)
                            {
                                int index = realPage.Groups.IndexOf(realGroup);
                                realPage.Groups.RemoveAt(index);
                                realGroup.ItemLinks.Add((BarButtonItem)element);
                                realPage.Groups.Insert(index, realGroup);
                            }
                            else
                            {
                                RibbonPageGroup group = new RibbonPageGroup();
                                group.Caption = UIConstants.MainCommandGroupName;
                                group.ItemLinks.Add((BarButtonItem)element);
                                realPage.Groups.Add(group);
                            }
                        }
                        else if (element is RibbonDefaultPageCategory)
                        {
                            RibbonDefaultPageCategory category     = (RibbonDefaultPageCategory)element;
                            RibbonDefaultPageCategory realCategory = regionTarget.Items.Where(item => item is RibbonDefaultPageCategory).First() as RibbonDefaultPageCategory;
                            RibbonPage page = category.Pages.First();
                            if (page.Groups.Count == 0)
                            {
                                return;
                            }
                            RibbonPage realPage = realCategory.Pages.Where(item =>
                            {
                                if (item.Caption.ToString() == page.Caption.ToString())
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPage;
                            RibbonPageGroup group = page.Groups.First();
                            if (group.ItemLinks.Count == 0)
                            {
                                return;
                            }
                            RibbonPageGroup realGroup = realPage.Groups.Where(item =>
                            {
                                if (item.Caption.ToString() == page.Caption.ToString())
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPageGroup;
                            if (realGroup != null)
                            {
                                int index = realPage.Groups.IndexOf(realGroup);
                                realPage.Groups.RemoveAt(index);
                                realGroup.ItemLinks.Add(group.ItemLinks.First());
                                realPage.Groups.Insert(index, realGroup);
                            }
                            else
                            {
                                realPage.Groups.Add(group);
                            }
                        }
                    }
                }
                else if (e.Action == NotifyCollectionChangedAction.Remove)
                {
                    foreach (object element in e.OldItems)
                    {
                        if (element is RibbonPageCategory)
                        {
                            RibbonPageCategory category = (RibbonPageCategory)element;
                            if (category.Pages.Count == 0)
                            {
                                return;
                            }

                            RibbonPageCategory realCategory = regionTarget.Items.Where(item =>
                            {
                                if (item is RibbonPageCategory && ((RibbonPageCategory)item).Caption == category.Caption)
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPageCategory;
                            if (realCategory != null)
                            {
                                regionTarget.Items.Remove(realCategory);
                            }
                        }
                        else if (element is BarButtonItem)
                        {
                            BarButtonItem button = (BarButtonItem)element;

                            RibbonDefaultPageCategory realCategory = regionTarget.Items.Where(item => item is RibbonDefaultPageCategory).First() as RibbonDefaultPageCategory;
                            RibbonPage realPage = realCategory.Pages.Where(item =>
                            {
                                if (item.Caption.ToString() == UIConstants.MainCommandPageName)
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPage;
                            RibbonPageGroup realGroup = realPage.Groups.Where(item =>
                            {
                                if (item.Caption.ToString() == UIConstants.MainCommandGroupName)
                                {
                                    return(true);
                                }
                                return(false);
                            }).FirstOrDefault() as RibbonPageGroup;
                            int index = realPage.Groups.IndexOf(realGroup);
                            realPage.Groups.RemoveAt(index);
                            for (int i = 0; i < realGroup.ItemLinks.Count; i++)
                            {
                                if (realGroup.ItemLinks[i].ActualContent == button.Content)
                                {
                                    realGroup.ItemLinks.RemoveAt(i);
                                    break;
                                }
                            }
                            realPage.Groups.Insert(index, realGroup);
                        }
                    }
                }
            };
        }
예제 #6
0
        private void DocGroup_SelectedItemChanged(object sender, SelectedItemChangedEventArgs e)
        {
            if (ribbonControl.Categories.Count > 1)
            {
                ribbonControl.Categories.RemoveAt(1);
            }

            DocumentPanel panel = e.Item as DocumentPanel;

            if (panel == null)
            {
                return;
            }

            Page win = panel.Tag as Page;

            if (win == null)
            {
                return;
            }

            #region 合并ribbon菜单

            RibbonControl ribCtor = win.FindName("ribbonControl") as RibbonControl;
            if (ribCtor != null)
            {
                RibbonDefaultPageCategory pageCategory    = ribCtor.Categories.FirstOrDefault() as RibbonDefaultPageCategory;
                RibbonPageCategory        ribPageCategory = new RibbonPageCategory();
                ribPageCategory.Color   = Colors.Orange;
                ribPageCategory.Caption = pageCategory.Caption;
                ribbonControl.Categories.Add(ribPageCategory);

                foreach (RibbonPage page in pageCategory.Pages)
                {
                    RibbonPage newPage = new RibbonPage();
                    foreach (RibbonPageGroup group in page.Groups)
                    {
                        RibbonPageGroup newGroup = new RibbonPageGroup()
                        {
                            Caption = group.Caption
                        };
                        foreach (var item in group.Items)
                        {
                            if (item is BarButtonItem)
                            {
                                BarButtonItem btn    = item as BarButtonItem;
                                BarButtonItem newBtn = new BarButtonItem()
                                {
                                    Content     = btn.Content,
                                    RibbonStyle = btn.RibbonStyle,
                                    Glyph       = btn.Glyph,
                                    LargeGlyph  = btn.LargeGlyph,
                                    KeyGesture  = btn.KeyGesture,
                                };
                                newBtn.ItemClick += (s, arg) =>
                                {
                                    btn.Focusable = true;
                                    btn.Focus();       //TextBox 失去焦点后才反馈给绑定值
                                    btn.PerformClick();
                                };

                                Binding binding = new Binding()
                                {
                                    Source = btn, Path = new PropertyPath("IsEnabled")
                                };
                                BindingOperations.SetBinding(newBtn, IsEnabledProperty, binding);

                                binding = new Binding()
                                {
                                    Source = btn, Path = new PropertyPath("Visibility")
                                };
                                BindingOperations.SetBinding(newBtn, VisibilityProperty, binding);

                                newGroup.Items.Add(newBtn);
                            }
                        }
                        newPage.Groups.Add(newGroup);
                    }

                    newPage.Caption    = "工作栏";
                    newPage.IsSelected = true;
                    ribPageCategory.Pages.Add(newPage);
                }

                ribPageCategory.IsVisible = true;
            }

            ribbonControl.UpdateLayout();

            #endregion
        }