Skip to main content

syncfusion-wpf-tabbedwindow

Comprehensive guide for implementing Syncfusion WPF Tabbed Window control that combines SfChromelessWindow with SfTabControl for document-based applications. Use this skill when implementing chromeless tabbed windows, browser-style tabs, document management windows, or Visual Studio-style tabs in WPF. Covers tear-off tabs, floating tab windows, tab merging between windows, drag-drop tab reordering, and MVVM tab binding scenarios.

Informações da origem

Repositório
syncfusion/wpf-ui-components-skills
Última atividade na origem
6 de julho de 2026 às 07:21
Idioma detectado do SKILL.md
inglês
Estrelas
5
Forks
2

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
6 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
syncfusion-wpf-tabbedwindow
description
Comprehensive guide for implementing Syncfusion WPF Tabbed Window control that combines SfChromelessWindow with SfTabControl for document-based applications. Use this skill when implementing chromeless tabbed windows, browser-style tabs, document management windows, or Visual Studio-style tabs in WPF. Covers tear-off tabs, floating tab windows, tab merging between windows, drag-drop tab reordering, and MVVM tab binding scenarios.
metadata
{"author":"Syncfusion Inc","version":"34.1.29"}
# Implementing Syncfusion WPF Tabbed Windows A comprehensive guide for implementing the Syncfusion WPF Tabbed Window control, which combines `SfChromelessWindow` with `SfTabControl` to create professional document-based applications with advanced tab management, tear-off windows, and cross-window tab merging capabilities. ## When to Use This Skill Use this skill for document-based applications with multiple tabs, browser-style interfaces, tear-off windows, tab merging, and MVVM binding. Covers setup, window modes, tab management, data binding, floating windows, and customization. ## Component Overview The **Tabbed Window** is a powerful combination of `SfChromelessWindow` and `SfTabControl` that enables professional document-based applications with: - **Drag-and-Drop Reordering** - Intuitive tab reordering within the tab bar or between windows - **Tear-Off Windows** - Create floating windows by dragging tabs outside window boundaries - **Tab Merging** - Move tabs between multiple TabbedWindow instances with validation - **Flexible Tab Management** - Dynamic add, remove, and select operations with close/new tab buttons - **MVVM Support** - Full data binding through ItemsSource for data-driven scenarios - **Window Type Modes** - Tabbed mode (chrome-integrated) or Normal mode (content-based) - **Content Customization** - Templates for headers, icons, and content - **Event-Driven Architecture** - Comprehensive events for all tab operations **Key Assemblies Required:** - `Syncfusion.SfChromelessWindow.WPF` - `Syncfusion.Shared.WPF` **Namespace:** ```xml xmlns:syncfusion="http://schemas.syncfusion.com/wpf" ``` ## Documentation and Navigation Guide ### Getting Started 📄 **Read:** [references/getting-started.md](references/getting-started.md) When you need to: - Install and reference required assemblies - Create your first tabbed window in XAML or code-behind - Understand Window Type Modes (Tabbed vs Normal) - Choose the right mode for your application - Create basic tab items - Configure essential properties **Key Topics:** Installation, basic window setup, `WindowType` property, Tabbed vs Normal mode comparison, assembly references, namespace imports --- ### Tab Management 📄 **Read:** [references/tab-management.md](references/tab-management.md) When you need to: - Add close buttons to tabs - Enable the new tab (+) button - Handle NewTabRequested event for dynamic tab creation - Customize the new tab button appearance - Implement keyboard shortcuts (Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+T) - Support middle-click to close tabs - Programmatically add, remove, or select tabs **Key Topics:** `CloseButtonVisibility`, `EnableNewTabButton`, `NewTabRequested` event, `NewTabButtonStyle`, keyboard shortcuts, tab selection --- ### Data Binding (MVVM) 📄 **Read:** [references/data-binding.md](references/data-binding.md) When you need to: - Bind tabs to a ViewModel collection - Implement MVVM pattern with tabbed windows - Use `ItemsSource` for data-driven tab scenarios - Create tab models and ViewModels - Customize tab headers and content through templates - Configure `ItemTemplate` and `ContentTemplate` - Use `ItemContainerStyle` for tab styling - Handle dynamic collection updates with ObservableCollection **Key Topics:** MVVM pattern, `ItemsSource` binding, `ItemTemplate`, `ContentTemplate`, `ItemContainerStyle`, ObservableCollection, tab models --- ### Tab Merging and Floating Windows 📄 **Read:** [references/merge-tabs.md](references/merge-tabs.md) When you need to: - Enable tear-off functionality to create floating windows - Understand how tabs become independent windows - Reattach floating tabs back to main window - Merge tabs between multiple windows - Validate merge operations with `PreviewTabMerge` event - Control which tabs can be moved - Transform items during merge operations - Handle multi-window workspace scenarios **Key Topics:** Tear-off windows, drag-outside behavior, floating window lifecycle, `PreviewTabMerge` event, `TabMergePreviewEventArgs`, cross-window merging, merge validation --- ### Customization and Styling 📄 **Read:** [references/customization.md](references/customization.md) When you need to: - Apply Syncfusion themes - Customize window chrome appearance - Style tab headers and content areas - Create custom header and content templates - Customize close button appearance - Configure drag-drop visual feedback - Set colors, fonts, and spacing - Implement responsive design - Follow best practices for professional appearance **Key Topics:** Theme application, style customization, template customization, visual appearance, `AllowDragDrop`, responsive design, professional styling --- ## Quick Start Example ### Basic Tabbed Window with Close Buttons **XAML:** ```xml <syncfusion:SfChromelessWindow x:Class="TabbedWindowApp.MainWindow" 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="Document Manager" WindowType="Tabbed" Height="600" Width="900"> <syncfusion:SfTabControl AllowDragDrop="True" EnableNewTabButton="True" NewTabRequested="OnNewTabRequested"> <syncfusion:SfTabItem Header="Document 1" CloseButtonVisibility="Visible"> <TextBlock Text="Welcome to Document 1" Margin="20"/> </syncfusion:SfTabItem> <syncfusion:SfTabItem Header="Document 2" CloseButtonVisibility="Visible"> <TextBlock Text="Welcome to Document 2" Margin="20"/> </syncfusion:SfTabItem> </syncfusion:SfTabControl> </syncfusion:SfChromelessWindow> ``` **Code-Behind:** ```csharp using Syncfusion.Windows.Controls; public partial class MainWindow : SfChromelessWindow { public MainWindow() { InitializeComponent(); } private void OnNewTabRequested(object sender, NewTabRequestedEventArgs e) { var tabCount = ((SfTabControl)sender).Items.Count; var newTab = new SfTabItem { Header = $"Document {tabCount + 1}", Content = new TextBlock { Text = $"New Document {tabCount + 1}", Margin = new Thickness(20) }, CloseButtonVisibility = Visibility.Visible }; e.Item = newTab; } } ``` ## Common Patterns ### Pattern 1: Document Editor with Drag-Drop and New Tab ```xml <syncfusion:SfChromelessWindow WindowType="Tabbed"> <syncfusion:SfTabControl AllowDragDrop="True" EnableNewTabButton="True" NewTabRequested="OnNewTabRequested"> <!-- Tabs here --> </syncfusion:SfTabControl> </syncfusion:SfChromelessWindow> ``` ### Pattern 2: MVVM Data-Bound Tabs ```xml <syncfusion:SfTabControl ItemsSource="{Binding OpenDocuments}"> <syncfusion:SfTabControl.ItemContainerStyle> <Style TargetType="syncfusion:SfTabItem"> <Setter Property="HeaderTemplate"> <Setter.Value> <DataTemplate> <TextBlock Text="{Binding Title}" /> </DataTemplate> </Setter.Value> </Setter> </Style> </syncfusion:SfTabControl.ItemContainerStyle> <syncfusion:SfTabControl.ContentTemplate> <DataTemplate> <TextBlock Text="{Binding Content}" /> </DataTemplate> </syncfusion:SfTabControl.ContentTemplate> </syncfusion:SfTabControl> ``` ## Key Properties and Events ### Core Properties | Property | Type | Description | |----------|------|-------------| | `WindowType` | WindowType | `Tabbed` (chrome-integrated) or `Normal` (content-based) | | `AllowDragDrop` | bool | Enable drag-drop reordering and tear-off | | `EnableNewTabButton` | bool | Show/hide the new tab (+) button | | `SelectedItem` | object | Currently active tab | | `SelectedIndex` | int | Index of active tab | | `ItemsSource` | IEnumerable | Bind tabs to a collection (MVVM) | | `CloseButtonVisibility` | Visibility | Show/hide close button per tab | ### Important Events | Event | Description | |-------|-------------| | `NewTabRequested` | Fired when user clicks the + button; set `e.Item` to create tab | | `PreviewTabMerge` | Fired before tab moves between windows; set `e.Allow` to validate | | `SelectionChanged` | Fired when active tab changes | ### Styling Properties | Property | Description | |----------|-------------| | `NewTabButtonStyle` | Style for the new tab button | | `ItemTemplate` | DataTemplate for tab headers | | `ContentTemplate` | DataTemplate for tab content | | `ItemContainerStyle` | Style for SfTabItem containers | ## Best Practices 1. **Choose the Right Mode:** Use Tabbed mode for document-centric apps, Normal mode when tabs are secondary navigation 2. **Enable Drag-Drop:** Set `AllowDragDrop="True"` for intuitive reordering and tear-off functionality 3. **Handle NewTabRequested:** Always implement this event handler when `EnableNewTabButton="True"` 4. **MVVM Pattern:** Use `ItemsSource` binding for data-driven scenarios with clean separation of concerns 5. **Validate Merges:** Use `PreviewTabMerge` to control which tabs can be moved between windows 6. **Keyboard Support:** Document keyboard shortcuts for users (Ctrl+Tab, Ctrl+Shift+Tab, Ctrl+T) 7. **Visual Feedback:** Ensure drag-drop operations have clear visual indicators for user guidance
Ver no GitHub