mcpField
S
syncfusion-wpf-tabbed-mdi-form

syncfusion-wpf-tabbed-mdi-form

github.com/syncfusion设计与 UI5158 次安装1 周前更新
代码仓库

关于 syncfusion-wpf-tabbed-mdi-form

面向 WPF 开发者的 Syncfusion DocumentContainer(Tabbed MDI Form)实现指南,用于管理应用中的多个文档和面板。涵盖标签式与 MDI 布局、窗口切换及状态持久化。

主要功能

  1. 01支持 TDI 和 MDI 布局
  2. 02五种窗口切换样式
  3. 03标签分组与固定
  4. 04保存和恢复布局状态
  5. 05窗口调整、全屏与键盘导航

适用场景

  1. 01构建多文档代码编辑器
  2. 02在标签页中管理多个文档
  3. 03同时查看多个报表或面板
  4. 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.md
container-modes.md
customization.md
getting-started.md
state-persistence.md
tab-management.md
window-management.md
window-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);

关键属性

属性类型描述
ModeDocumentContainerMode设置 TDI 或 MDI 模式
SwitchModeSwitchMode窗口切换器样式(Immediate、List、QuickTabs、VS2005、VistaFlip)
CanMDIMinimizebool启用 MDI 窗口最小化
ItemsItemCollection容器中的文档集合

关键方法

方法描述
SaveDockState()将文档状态保存到存储中(Registry、XML、Binary)
LoadDockState()从存储中加载文档状态
ResetState()将容器重置为默认状态
DeleteDockState()从存储中删除已保存的状态
Items.Add()向容器添加文档
Items.Clear()移除所有文档

常见用例

  1. 代码编辑器和 IDE:通过标签式或 MDI 布局创建多文档代码编辑环境
  2. 数据录入应用程序:同时管理多个数据录入表单
  3. 文档查看器:在标签式界面中显示多个文档(PDF、图像、文本)
  4. 仪表板应用程序:组织多个仪表板面板和图表
  5. 报告工具:管理多个报告视图和编辑器
  6. 配置工具:处理多个配置面板或属性编辑器
  7. 医疗应用程序:通过多个文档视图管理患者记录
  8. 金融应用程序:同时显示多个图表、报告和数据网格

后续步骤: 根据具体实现需求,选择上方合适的参考文件。从 getting-started.md 开始完成初始设置,然后按需探索特定功能。

评论

支持 Markdown