Revit Dockable Pane
DockablePaneProvider.Register(...).SetConfiguration(...) (from Nice3point.Revit.Toolkit) wraps the verbose IDockablePaneProvider registration into a fluent call.
Register the pane once during application startup.
When to use
- Adding a WPF dockable pane to the Revit UI and setting its initial dock position.
Workflow
Step 1: Register during startup
DockablePaneProvider
.Register(uiControlledApplication, paneId, "Analysis")
.SetConfiguration(data =>
{
data.FrameworkElement = new AnalysisPaneView();
data.InitialState = new DockablePaneState
{
MinimumWidth = 300,
DockPosition = DockPosition.Right
};
});
where paneId is a Guid or DockablePaneId value.
.Register(uiControlledApplication, paneId, "Analysis") can be replaced with:
DockablePaneProvider
.Register(uiControlledApplication)
.SetId(paneId) // or SetId(dockablePaneId)
.SetTitle("Analysis");
Step 2: Resolve the view from DI when needed
For a pane element built from a DI container, set data.FrameworkElementCreator to a FrameworkElementCreator<T> backed by the service provider (from Nice3point.Revit.Toolkit):
data.FrameworkElementCreator = new FrameworkElementCreator<AnalysisPaneView>(serviceProvider);
Step 3: Verify
Confirm the pane appears under the Revit view tab and docks in the configured position.
Validation
- The pane is registered once during application startup with a stable pane id.
-
FrameworkElement(orFrameworkElementCreator) andInitialStateare set.
Common Pitfalls
| Pitfall | Correct approach |
|---|---|
Implementing IDockablePaneProvider by hand |
Use DockablePaneProvider.Register(...).SetConfiguration(...). |
A new pane id (Guid) generated per run |
Use a stable, persisted pane id. |
DockablePaneProvider not found |
The Nice3point.Revit.Toolkit package is not referenced. |