syncfusion-wpf-tabbedwindow — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited syncfusion-wpf-tabbedwindow (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
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.
The Tabbed Window is a powerful combination of SfChromelessWindow and SfTabControl that enables professional document-based applications with:
Key Assemblies Required:
Syncfusion.SfChromelessWindow.WPFSyncfusion.Shared.WPFNamespace:
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"📄 Read: references/getting-started.md
When you need to:
Key Topics: Installation, basic window setup, WindowType property, Tabbed vs Normal mode comparison, assembly references, namespace imports
📄 Read: references/tab-management.md
When you need to:
Key Topics: CloseButtonVisibility, EnableNewTabButton, NewTabRequested event, NewTabButtonStyle, keyboard shortcuts, tab selection
📄 Read: references/data-binding.md
When you need to:
ItemsSource for data-driven tab scenariosItemTemplate and ContentTemplateItemContainerStyle for tab stylingKey Topics: MVVM pattern, ItemsSource binding, ItemTemplate, ContentTemplate, ItemContainerStyle, ObservableCollection, tab models
📄 Read: references/merge-tabs.md
When you need to:
PreviewTabMerge eventKey Topics: Tear-off windows, drag-outside behavior, floating window lifecycle, PreviewTabMerge event, TabMergePreviewEventArgs, cross-window merging, merge validation
📄 Read: references/customization.md
When you need to:
Key Topics: Theme application, style customization, template customization, visual appearance, AllowDragDrop, responsive design, professional styling
XAML:
<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:
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;
}
}<syncfusion:SfChromelessWindow WindowType="Tabbed">
<syncfusion:SfTabControl
AllowDragDrop="True"
EnableNewTabButton="True"
NewTabRequested="OnNewTabRequested">
<!-- Tabs here -->
</syncfusion:SfTabControl>
</syncfusion:SfChromelessWindow><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>| 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 |
| 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 |
| Property | Description |
|---|---|
NewTabButtonStyle | Style for the new tab button |
ItemTemplate | DataTemplate for tab headers |
ContentTemplate | DataTemplate for tab content |
ItemContainerStyle | Style for SfTabItem containers |
AllowDragDrop="True" for intuitive reordering and tear-off functionalityEnableNewTabButton="True"ItemsSource binding for data-driven scenarios with clean separation of concernsPreviewTabMerge to control which tabs can be moved between windows~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.