1. 程式人生 > 其它 >將DockablePane新增到使用者介面中實現顯示隱藏

將DockablePane新增到使用者介面中實現顯示隱藏

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