將DockablePane新增到使用者介面中實現顯示隱藏
阿新 • • 發佈:2021-12-16
public void AddDockablePaneToUserInterface(UIControlledApplication app, Guid pageId, string pageTitle) { Autodesk.Windows.RibbonControl adWinRibbon = Autodesk.Windows.ComponentManager.Ribbon; Autodesk.Windows.RibbonTab tab_View = adWinRibbon.Tabs.FirstOrDefault(x => x.Id == "View"); if (tab_View != null) { Autodesk.Windows.RibbonPanel panel = tab_View.Panels.FirstOrDefault(x => x.Source != null && x.Source.Id == "manageviews_shr"); if (panel != null) { var button = panel.Source.Items.FirstOrDefault(x => x.Id == "HID_APPLICATION_ELEMENTS_RibbonListButton") as Autodesk.Windows.RibbonChecklistButton; if (button != null) { var newBtn = new Autodesk.Windows.RibbonToggleButton { Id = pageId.ToString("N"), Text = pageTitle, IsChecked = true }; newBtn.CheckStateChanged += (o, e) => { DockablePane pane = app.GetDockablePane(new DockablePaneId(pageId)); if (pane != null) { if (newBtn.IsChecked) { pane.Show(); } else { pane.Hide(); } } }; button.DropDownOpened += (o, e) => { DockablePane pane = app.GetDockablePane(new DockablePaneId(pageId)); if (pane != null) { newBtn.IsChecked = pane.IsShown(); } }; button.Items.Insert(button.Items.Count - 3, newBtn); } } } }