diff --git a/TransportPlugin.csproj b/TransportPlugin.csproj
index 3a7251b..daa497d 100644
--- a/TransportPlugin.csproj
+++ b/TransportPlugin.csproj
@@ -148,6 +148,7 @@
+
diff --git a/src/Core/AliasTree/AliasTreePlugin.cs b/src/Core/AliasTree/AliasTreePlugin.cs
new file mode 100644
index 0000000..388d629
--- /dev/null
+++ b/src/Core/AliasTree/AliasTreePlugin.cs
@@ -0,0 +1,51 @@
+using Autodesk.Navisworks.Api.Plugins;
+using NavisworksTransport.UI.WPF.Views;
+using NavisworksTransport.Utils;
+using System.Windows.Forms.Integration;
+
+namespace NavisworksTransport.Core.AliasTree
+{
+ ///
+ /// 别名导航树 — DockPanePlugin 入口
+ ///
+ /// 使用方式:
+ /// 1. 启动 Navisworks
+ /// 2. View → Docking Windows → 别名导航树
+ /// 3. 手动拖放到内置 Selection Tree 下方
+ ///
+ [Plugin("NavisworksTransport.AliasTree", "Tian",
+ DisplayName = "别名导航树",
+ ToolTip = "自定义节点别名管理面板 — 双击编辑、右键菜单、JSON 导入导出")]
+ [DockPanePlugin(300, 400, FixedSize = false, AutoScroll = true)]
+ public class AliasTreePlugin : DockPanePlugin
+ {
+ public override System.Windows.Forms.Control CreateControlPane()
+ {
+ LogManager.Info("[别名树] 创建 DockPane 面板");
+
+ var eh = new ElementHost
+ {
+ AutoSize = true
+ };
+
+ var control = new AliasTreeControl();
+ eh.Child = control;
+ eh.CreateControl();
+
+ return eh;
+ }
+
+ public override void DestroyControlPane(System.Windows.Forms.Control pane)
+ {
+ LogManager.Info("[别名树] 销毁 DockPane 面板");
+
+ if (pane is ElementHost eh && eh.Child is AliasTreeControl ctrl)
+ {
+ ctrl.Cleanup();
+ eh.Child = null;
+ }
+
+ pane?.Dispose();
+ }
+ }
+}
diff --git a/src/UI/WPF/Views/AliasTreeControl.xaml b/src/UI/WPF/Views/AliasTreeControl.xaml
index be35ca8..3154931 100644
--- a/src/UI/WPF/Views/AliasTreeControl.xaml
+++ b/src/UI/WPF/Views/AliasTreeControl.xaml
@@ -166,7 +166,9 @@
VirtualizingPanel.VirtualizationMode="Recycling"
Background="White"
BorderThickness="0"
- ItemContainerStyle="{StaticResource AliasTreeViewItemStyle}">
+ ItemContainerStyle="{StaticResource AliasTreeViewItemStyle}"
+ TreeViewItem.Expanded="OnTreeViewItemExpanded"
+ TreeViewItem.Selected="OnTreeViewItemSelected">