关于 syncfusion-wpf-tabbed-mdi-form
面向 WPF 开发者的 Syncfusion DocumentContainer(Tabbed MDI Form)实现指南,用于管理应用中的多个文档和面板。涵盖标签式与 MDI 布局、窗口切换及状态持久化。
主要功能
- 01支持 TDI 和 MDI 布局
- 02五种窗口切换样式
- 03标签分组与固定
- 04保存和恢复布局状态
- 05窗口调整、全屏与键盘导航
适用场景
- 01构建多文档代码编辑器
- 02在标签页中管理多个文档
- 03同时查看多个报表或面板
- 04跨会话保存文档布局
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ syncfusion/ wpf-ui-components-skills --skill syncfusion-wpf-tabbed-mdi-form安装后在 Claude Code 中输入/syncfusion-wpf-tabbed-mdi-form确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/advanced-features.mdcontainer-modes.mdcustomization.mdgetting-started.mdstate-persistence.mdtab-management.mdwindow-management.mdwindow-switchers.md详细介绍
实现 Syncfusion WPF DocumentContainer
Syncfusion WPF DocumentContainer(选项卡式 MDI 窗体)是一种控件,用于在应用程序中容纳文档、控件和面板。它支持创建 MDI(多文档界面)和 TDI(选项卡式文档界面)布局,方便构建类似 Visual Studio 或现代 IDE 文档管理系统的可导航应用程序。
何时使用此技能
在以下场景中,需要使用 DocumentContainer 控件:
- 多文档界面:创建可同时管理多个文档的应用程序(例如 Visual Studio、Word 或 Excel)
- 选项卡式界面:为文档和面板实现基于选项卡的导航
- MDI 应用程序:构建传统的多文档界面应用程序,并支持浮动/调整大小的窗口
- TDI 应用程序:创建支持固定选项卡的现代选项卡式文档界面应用程序
- 文档管理:在单个应用程序窗口中管理多个视图、编辑器或面板
- 窗口切换:支持使用键盘快捷键(CTRL+TAB)轻松在多个文档间导航
- 状态持久化:跨应用程序会话保存和恢复文档布局、位置和状态
- 专业布局:创建具有 Visual Studio 风格文档管理和窗口组织功能的应用程序
组件概览
主要功能:
- 支持 TDI(选项卡式)和 MDI(多文档)两种界面模式
- 提供五种窗口切换器样式用于导航(Immediate、List、QuickTabs、VS2005、VistaFlip)
- 窗口状态管理(最小化、最大化、调整大小)
- 使用选项卡组整理相关文档
- 固定/取消固定选项卡,以区分持久文档和临时文档
- 状态持久化(Registry、XML、Binary、Isolated Storage)
- 支持全屏模式
- 支持拖放自定义
- 支持键盘导航和快捷键
- 支持主题和皮肤
程序集要求:
- Syncfusion.Tools.WPF
- Syncfusion.Shared.WPF
文档与导航指南
快速入门
📄 阅读: references/getting-started.md
- 部署程序集和 NuGet 包
- 通过设计器或代码添加 DocumentContainer
- 向容器添加文档窗口
- 为文档设置标题
- TDI/MDI 基础设置及完整示例
容器模式(TDI 与 MDI)
📄 阅读: references/container-modes.md
- 了解 TDI(选项卡式文档界面)
- 了解 MDI(多文档界面)
- 设置 Mode 属性
- 了解各种模式的适用场景
- 在运行时切换模式
- 模式专属功能和行为
窗口管理
📄 阅读: references/window-management.md
- 最小化 MDI 窗口(CanMDIMinimize 属性)
- 最大化 MDI 窗口
- 设置窗口状态(Normal、Minimized、Maximized)
- 调整窗口大小并设置 MDI 边界
- 使用键盘调整窗口大小
- 窗口排列模式
选项卡管理
📄 阅读: references/tab-management.md
- 添加和移除文档项
- 创建和整理选项卡组
- 固定和取消固定选项卡
- 选项卡导航和排序
- 动态管理选项卡
- Items 集合操作
窗口切换器
📄 阅读: references/window-switchers.md
- CTRL+TAB 导航概述
- SwitchMode 属性和选项
- Immediate、List、QuickTabs 模式
- VS2005 和 VistaFlip 模式
- 为应用程序选择合适的切换器
- 窗口导航键盘快捷键
状态持久化
📄 阅读: references/state-persistence.md
- SaveDockState 和 LoadDockState 方法
- 保存到 Registry(Binary/SOAP formatter)
- 保存到 Isolated Storage
- 保存到 XML 文件
- 保存到 Binary 文件
- 重置和删除状态
- 状态管理最佳实践
自定义与样式
📄 阅读: references/customization.md
- 设置文档标题
- 自定义标题模板
- 主题和皮肤支持
- 视觉自定义选项
- 容器外观样式
- 自定义布局
高级功能
📄 阅读: references/advanced-features.md
- 全屏模式
- 禁用拖放
- MDI 窗口排列
- 事件处理
- 与 DockingManager 集成
- 性能优化
- 常见问题排查
快速入门
基本 TDI 实现
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
Title="DocumentContainer Demo" Height="600" Width="800">
<Grid>
<syncfusion:DocumentContainer x:Name="documentContainer" Mode="TDI">
<FlowDocumentScrollViewer syncfusion:DocumentContainer.Header="Document 1">
<FlowDocument>
<Paragraph>Content of Document 1</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
<FlowDocumentScrollViewer syncfusion:DocumentContainer.Header="Document 2">
<FlowDocument>
<Paragraph>Content of Document 2</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
<FlowDocumentScrollViewer syncfusion:DocumentContainer.Header="Document 3">
<FlowDocument>
<Paragraph>Content of Document 3</Paragraph>
</FlowDocument>
</FlowDocumentScrollViewer>
</syncfusion:DocumentContainer>
</Grid>
</Window>
基本 MDI 实现(C#)
using Syncfusion.Windows.Tools.Controls;
using System.Windows;
using System.Windows.Controls;
namespace DocumentContainerDemo
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
// Create DocumentContainer in MDI mode
DocumentContainer documentContainer = new DocumentContainer();
documentContainer.Mode = DocumentContainerMode.MDI;
documentContainer.SwitchMode = SwitchMode.VS2005;
// Add document windows
Button doc1 = new Button { Content = "Document 1 Content" };
Button doc2 = new Button { Content = "Document 2 Content" };
Button doc3 = new Button { Content = "Document 3 Content" };
// Set headers
DocumentContainer.SetHeader(doc1, "Document 1");
DocumentContainer.SetHeader(doc2, "Document 2");
DocumentContainer.SetHeader(doc3, "Document 3");
// Add to container
documentContainer.Items.Add(doc1);
documentContainer.Items.Add(doc2);
documentContainer.Items.Add(doc3);
// Set as window content
this.Content = documentContainer;
}
}
}
常见模式
模式 1:带 QuickTabs 切换器的 TDI
适用于采用类似 Visual Studio 导航方式的现代标签式应用程序。
<syncfusion:DocumentContainer Name="DocContainer"
Mode="TDI"
SwitchMode="QuickTabs">
</syncfusion:DocumentContainer>
模式 2:带窗口管理的 MDI
为传统 MDI 应用程序启用最小化、最大化和调整大小功能。
<syncfusion:DocumentContainer Name="DocContainer"
Mode="MDI"
CanMDIMinimize="True"
SwitchMode="VS2005">
</syncfusion:DocumentContainer>
模式 3:状态持久化(XML)
跨会话保存和还原文档布局。
using System.Runtime.Serialization.Formatters.Binary;
// Save state to XML
BinaryFormatter formatter = new BinaryFormatter();
documentContainer.SaveDockState(formatter, StorageFormat.Xml, @"layout.xml");
// Load state from XML
BinaryFormatter formatter = new BinaryFormatter();
documentContainer.LoadDockState(formatter, StorageFormat.Xml, @"layout.xml");
模式 4:动态文档管理
以编程方式添加和移除文档。
// Add a new document
TextBox newDoc = new TextBox { Text = "New Document Content" };
DocumentContainer.SetHeader(newDoc, "New Document");
documentContainer.Items.Add(newDoc);
// Remove all documents
documentContainer.Items.Clear();
// Remove specific document
documentContainer.Items.Remove(newDoc);
关键属性
| 属性 | 类型 | 描述 |
|---|---|---|
Mode | DocumentContainerMode | 设置 TDI 或 MDI 模式 |
SwitchMode | SwitchMode | 窗口切换器样式(Immediate、List、QuickTabs、VS2005、VistaFlip) |
CanMDIMinimize | bool | 启用 MDI 窗口最小化 |
Items | ItemCollection | 容器中的文档集合 |
关键方法
| 方法 | 描述 |
|---|---|
SaveDockState() | 将文档状态保存到存储中(Registry、XML、Binary) |
LoadDockState() | 从存储中加载文档状态 |
ResetState() | 将容器重置为默认状态 |
DeleteDockState() | 从存储中删除已保存的状态 |
Items.Add() | 向容器添加文档 |
Items.Clear() | 移除所有文档 |
常见用例
- 代码编辑器和 IDE:通过标签式或 MDI 布局创建多文档代码编辑环境
- 数据录入应用程序:同时管理多个数据录入表单
- 文档查看器:在标签式界面中显示多个文档(PDF、图像、文本)
- 仪表板应用程序:组织多个仪表板面板和图表
- 报告工具:管理多个报告视图和编辑器
- 配置工具:处理多个配置面板或属性编辑器
- 医疗应用程序:通过多个文档视图管理患者记录
- 金融应用程序:同时显示多个图表、报告和数据网格
后续步骤: 根据具体实现需求,选择上方合适的参考文件。从 getting-started.md 开始完成初始设置,然后按需探索特定功能。