/*-------------------------------------------------------------------------
* 功能描述: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;
}
}
}
}