/*------------------------------------------------------------------------- * 功能描述:DockableWindow * 作者:xulisong * 创建时间: 2019/5/31 17:13:16 * 版本号:v1.0 * -------------------------------------------------------------------------*/ using Autodesk.Revit.UI; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace FWindSoft.Revit { public class DockableWindow : Page, IDockablePaneProvider { public DockableWindow() { Background = Brushes.White; } #region 属性相关,注册时使用 /// /// 关联PaneId /// public DockablePaneId PaneId { get; private set; } /// /// 关联UIControlledApplication /// public UIControlledApplication UIControlledApplication { get; private set; } /// /// 关联UIApplication /// public UIApplication UIApplication { get; private set; } #endregion public virtual void SetupDockablePane(DockablePaneProviderData data) { data.FrameworkElement = this as FrameworkElement; data.InitialState = new DockablePaneState(); data.InitialState.DockPosition = DockPosition.Right; if (data.InitialState.DockPosition == DockPosition.Floating) { data.InitialState.SetFloatingRectangle(new Autodesk.Revit.DB.Rectangle(100, 100, 100, 100)); } } /// /// 注册窗体到app /// /// /// public DockableWindow RegisterDockableWindow(UIControlledApplication application, DockablePaneId mainGuid) { string title = string.IsNullOrWhiteSpace(this.Title) ? this.GetType().ToString() : this.Title; UIControlledApplication = application; PaneId = mainGuid; return RevitCustomDockablePanels.RegisterDockablePane(application, PaneId, title, this); } public DockableWindow RegisterDockableWindow(UIApplication application, DockablePaneId mainGuid) { string title = string.IsNullOrWhiteSpace(this.Title) ? this.GetType().ToString() : this.Title; UIApplication = application; PaneId = mainGuid; return RevitCustomDockablePanels.RegisterDockablePane(application, PaneId, title, this); } public new void Show() { try { DockablePane dockPane = null; if (UIControlledApplication != null) { dockPane = RevitCustomDockablePanels.GetDockablePane(UIControlledApplication, PaneId); } else if (UIApplication != null) { dockPane = RevitCustomDockablePanels.GetDockablePane(UIControlledApplication, PaneId); } if (dockPane != null) { dockPane.Show(); } } catch (Exception ex) { throw; } } public new void Close() { try { DockablePane dockPane = null; if (UIControlledApplication != null) { dockPane = RevitCustomDockablePanels.GetDockablePane(UIControlledApplication, PaneId); } else if (UIApplication != null) { dockPane = RevitCustomDockablePanels.GetDockablePane(UIControlledApplication, PaneId); } if (dockPane != null) { dockPane.Hide(); } } catch (Exception ex) { throw; } } } }