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; }
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); } }
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(); }
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); }
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); } } } }; }
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 }