用途:在 Reactor 中实现可停靠窗口布局,DockManager 承载可拖拽、拆分、撕出为浮动窗口、重新停靠、侧边固定并可持久化的窗格树,是 IDE/Office 形态应用(解决方案资源管理器+编辑器区+工具窗格)的基础。
主要能力:DockSplit 提供可调整拆分(比例由宿主管理);DockTabGroup 为标签组,支持 TabPosition、CompactTabs、SelectedIndex、Width/Height、Role;Document 为可关闭文档窗格;ToolWindow 为可隐藏、可侧边固定并带 AllowedSides 掩码的工具窗格;角色 DocumentArea 是 Dock(Center) 首选目标且空时仍可见,ToolWindowStrip 是工具窗口拖放首选目标。
使用方式:启动时需一次性注册 DockingNativeInterop.Register(host.Reconciler)。核心规则是应用拥有内容、宿主拥有形态:manager.Layout 每次渲染由应用状态派生,不要用 OnLiveLayoutChanged 回写 Layout,否则会双重拥有形态,导致拖出可浮动但无法拖回、标签切换失效、分隔条回弹。增删窗格改变 Key 集合,宿主据此合并;重置用 .WithKey($"dock-{epoch}") 重挂载;跨启动持久化用 PersistenceId。每个窗格需稳定可等值的 Key。窗格内容默认按内容尺寸,需用 FlexColumn(...).Flex(grow: 1) 填充;多行 TextBox 的 AcceptsReturn 应作为元素属性(.AcceptsReturn())而非 .Set,否则文本会被截断。
适用场景:需要可拖拽、可浮动、可持久化布局的桌面式应用。限制:资料未提供收费、价格、平台支持范围等细节;具体 API 行为以官方文档为准。