Revit 2013から、アプリケーションは Revit API の Idling イベントと External vent クラスを活用することによってモードレス ダイアログを使用することができるようになりました。モードレス ダイアログが必要なアドインにも、ドッキング可能なモードレス ダイアログを使用するためのオプションがあります。標準のモードレス ダイアログと同様に、ドッキング可能なダイアログは登録された Windows Presentation Foundation (WPF)ダイアログ ペインであり、Revit のウィンドウ ドッキング システムに組み込まれています。登録されたドッキング可能なペインは Revit のメイン ウィンドウの上下左右に固定できる他、プロジェクト ブラウザなどの既存のシステム ペインにタブとして追加できます。さらに、ドッキング可能なペインをフロートさせ、標準のモードレス ダイアログと同様に使用することができます。
ドッキング可能なペインの登録には、IDockablePaneProvider インタフェースのインスタンスが必要です。このインタフェースの SetupDockablePane()メソッドは Revit ユーザ インタフェースの初期化中に呼び出され、アドインのドッキング可能なペイン ウィンドウに関する情報を収集します。SetupDockablePane()には、新しいドッキング可能なペインに関する情報のコンテナであるタイプ DockablePaneProviderData のパラメータが 1 つあります。
IDockablePaneProvider インタフェースの実装には、DockablePaneProviderData の FrameworkElement と InitialState プロパティの設定が必要です。FrameworkElement プロパティは、ペインのユーザ インタフェースを含む Windows Presentation Framework オブジェクトです。
注: アドインのドッキング可能ダイアログは IDockablePaneProvider を実装するクラスとすることと、System.Windows.Controls.Page のサブクラスとすることをお勧めします。
InitialState プロパティはドッキング ペインの最初の位置と設定であり、DockablePaneState クラスで指定します。ペインの DockPosition は上、下、左、右、浮動、タブのいずれかに設定できます。位置が[タブ]の場合は、DockablePaneState.TabBehind プロパティを使用することで、新しいペインの前に表示するペインを指定できます。位置が[浮動]の場合、DockablePaneState.FloatingRectangle プロパティに、ペインのサイズと位置を決定する長方形が含まれます。
実行時にドッキング可能ペインにアクセスするには、UIApplication.RegisterDockablePane()メソッドを呼び出して登録する必要があります。このメソッドには、新しいペインの一意の識別子(DockablePaneId)、ペインのキャプションを指定する文字列、IDockablePaneProvider インタフェースの実装が必要です。
ドッキング可能なペインには UIApplication.GetDockablePane()を呼び出し、一意の DockablePaneId に渡すことでアクセスできます。このメソッドは DockablePane を返します。DockablePane.Show()は、現在ペインが表示されていない場合、Revit ユーザ インタフェースの最後にドッキングされていた位置にペインを表示します。DockablePane.Hide()は、表示されているドッキング可能なペインを非表示にします。ただし、組み込みの Revit のドッキング可能なペインには影響しません。