From ff2c3e9a2b4c475e658e0536234bdc7445bffa5a Mon Sep 17 00:00:00 2001 From: harinath-2699 <93642300+harinath-2699@users.noreply.github.com> Date: Tue, 28 Apr 2026 19:17:04 +0530 Subject: [PATCH 1/2] Restructured the Merge Tabs md of Tabbed Window UG --- wpf/Tabbed-Window/merge-tabs.md | 66 +++++++++------------------------ 1 file changed, 18 insertions(+), 48 deletions(-) diff --git a/wpf/Tabbed-Window/merge-tabs.md b/wpf/Tabbed-Window/merge-tabs.md index ac1ff8535b..295e29f673 100644 --- a/wpf/Tabbed-Window/merge-tabs.md +++ b/wpf/Tabbed-Window/merge-tabs.md @@ -1,34 +1,25 @@ --- layout: post title: Merge Tabs Between Windows in WPF Tabbed Window | Syncfusion -description: Move tabs between multiple tabbed windows and manage merge operations with validation to ensure correct behavior. +description: Learn how to detach tabs into floating windows and validate tab movement between tabbed windows by using tear-off support and the PreviewTabMerge event. platform: wpf control: TabbedWindow documentation: ug --- -# WPF Tabbed Window - Merge Tabs Between Windows +# Merge Tabs Between Windows in WPF Tabbed Window -## Overview - -The Tabbed Window supports merging tabs between multiple windows through drag-and-drop operations. This enables users to reorganize content across multiple windows and create flexible workspace configurations. +This section explains how to move tabs between tabbed windows and provides an overview of the supported tear-off and merge validation features. ## Tear-Off Windows -The Tabbed Window supports tear-off functionality that allows users to detach tabs and create independent floating windows. These floating windows operate as separate TabbedWindow instances and can be reattached to the main window later. - -### Creating Floating Windows - -To tear off a tab and create a floating window: - -1. Drag a tab outside the boundary of the tab control -2. A new floating window is automatically created -3. The tab is now contained in the new floating window -4. The floating window can be a new tabbed window +The tabbed window interface supports tear-off functionality that allows tabs to be detached from an `SfTabControl` and displayed in independent floating windows. These floating windows can later be merged back into another tabbed window. ### Enable Tear-Off -Ensure `AllowDragDrop` is enabled, which is the prerequisite for tear-off functionality: +You can use the `AllowDragDrop` property to enable tear-off support in `SfTabControl`. When drag-and-drop is enabled, a tab can be dragged outside the tab control boundary to create a floating window. The detached tab is moved into the new window automatically, and it can be reattached later by dragging it back into the tab area of another tabbed window. If a floating window becomes empty after a tab is moved out, it is closed automatically. + +The floating window created through tear-off behaves like a regular tabbed window. It can be moved, resized, and minimized, and it supports the same tab features as the original window. {% tabs %} @@ -45,34 +36,15 @@ Ensure `AllowDragDrop` is enabled, which is the prerequisite for tear-off functi - {% endhighlight %} {% endtabs %} ![WPF TabbedWindow Tear-Off](merge-tabs_images/tear-off-tabbedwindow.gif) -### Reattaching Floating Tabs - -To reattach a tab from a floating window back to the main window: - -1. Drag the tab from the floating window -2. Drop it inside the main window's tab area -3. The tab is automatically integrated back into the main window -4. The floating window is closed if it becomes empty - -### Floating Window Behavior - -Each floating window created by tearing off a tab: -- Is a fully functional TabbedWindow instance -- Inherits SfChromelessWindow properties -- Can be resized, moved, and minimized -- Supports the same tab features as the main window (drag-drop, new tabs, close buttons) -- Can have additional tabs dragged into it - ## Control Tab Movement with PreviewTabMerge -The `PreviewTabMerge` event fires before a tab is moved between windows, allowing you to validate or cancel the merge operation: +You can use the `PreviewTabMerge` event to validate or cancel a tab merge operation before a tab is moved between tabbed windows. This event also allows you to modify the item that will be inserted into the target `SfTabControl`. {% tabs %} @@ -94,7 +66,7 @@ private void OnPreviewTabMerge(object sender, TabMergePreviewEventArgs e) var draggedItem = e.DraggedItem; var sourceControl = e.SourceControl; var targetControl = e.TargetControl; - + // Validate the merge if (draggedItem is Document doc && doc.IsLocked) { @@ -103,18 +75,18 @@ private void OnPreviewTabMerge(object sender, TabMergePreviewEventArgs e) MessageBox.Show("Cannot move locked documents"); return; } - + // Optional: Transform the item before merge if (draggedItem is Document docItem) { - e.ResultingItem = new Document - { + e.ResultingItem = new Document + { Title = docItem.Title, Content = docItem.Content, CreatedAt = DateTime.Now }; } - + // Allow the merge e.Allow = true; } @@ -129,10 +101,8 @@ private void OnPreviewTabMerge(object sender, TabMergePreviewEventArgs e) | Property | Type | Description | |----------|------|-------------| -| `DraggedItem` | object | The item being dragged | -| `SourceControl` | SfTabControl | The control where drag originated | -| `TargetControl` | SfTabControl | The control receiving the item | -| `Allow` | bool | Set to false to cancel merge (default: true) | -| `ResultingItem` | object | The item to be inserted (default: DraggedItem) | - - +| `DraggedItem` | object | The item being dragged. | +| `SourceControl` | SfTabControl | The tab control where the drag operation started. | +| `TargetControl` | SfTabControl | The tab control that receives the dragged item. | +| `Allow` | bool | Specifies whether the merge operation is allowed. Set this to `false` to cancel the merge. | +| `ResultingItem` | object | The item to be inserted into the target control. By default, this is the same as `DraggedItem`. | \ No newline at end of file From 14814d199436e99218551ee01848afe9cd9fd5db Mon Sep 17 00:00:00 2001 From: harinath-2699 <93642300+harinath-2699@users.noreply.github.com> Date: Wed, 29 Apr 2026 18:25:24 +0530 Subject: [PATCH 2/2] Added changes for databinding related changes --- wpf/Tabbed-Window/data-binding.md | 136 +++++++++++------- .../data-binding_images/wpf_customization.png | Bin 7530 -> 0 bytes .../data-binding_images/wpf_tabbedwindow.png | Bin 5853 -> 4462 bytes .../wpf_tabbedwindow_contenttemplate.png | Bin 0 -> 4648 bytes .../wpf_tabbedwindow_header.png | Bin 0 -> 4865 bytes wpf/Tabbed-Window/merge-tabs.md | 6 +- 6 files changed, 87 insertions(+), 55 deletions(-) delete mode 100644 wpf/Tabbed-Window/data-binding_images/wpf_customization.png create mode 100644 wpf/Tabbed-Window/data-binding_images/wpf_tabbedwindow_contenttemplate.png create mode 100644 wpf/Tabbed-Window/data-binding_images/wpf_tabbedwindow_header.png diff --git a/wpf/Tabbed-Window/data-binding.md b/wpf/Tabbed-Window/data-binding.md index 0aa297a2ad..72d82b0f97 100644 --- a/wpf/Tabbed-Window/data-binding.md +++ b/wpf/Tabbed-Window/data-binding.md @@ -1,67 +1,69 @@ --- layout: post title: Data Binding in WPF Tabbed Window | Syncfusion -description: Bind tabs to a collection using the ItemsSource property to support MVVM‑based tabbed window scenarios. +description: Learn how to bind tabs to a collection in a WPF tabbed window by using the ItemsSource property and templates for tab headers and content. platform: wpf control: TabbedWindow documentation: ug --- -# WPF Tabbed Window - Data Binding +# Data Binding in WPF Tabbed Window -## Overview +This section explains how to bind tabs to a collection in a WPF tabbed window by using the `ItemsSource` property of [SfTabControl](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html) and defining templates for tab headers and content. -The Tabbed Window provides full MVVM support through data binding. You can bind tabs to a collection using the `ItemsSource` property, enabling data-driven tab creation and dynamic content updates. +## Adding Tab Items using Data Binding -## ItemsSource Binding - -Bind the `ItemsSource` property to a collection in your ViewModel. Each item automatically generates a corresponding tab: +You can bind the `ItemsSource` property of [SfTabControl](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html) to a collection in the ViewModel to generate tabs automatically. Each item in the bound collection creates a corresponding tab. {% tabs %} + {% highlight C# %} // TabModel.cs -public class TabModel { - public string Header { get; set; } - public string Content { get; set; } +public class TabModel +{ + public string Header { get; set; } + public string Content { get; set; } } // MainViewModel.cs -public class MainViewModel : NotificationObject { - public ObservableCollection TabItems { get; } = new ObservableCollection(); - - public MainViewModel() { - TabItems.Add(new TabModel { Header = "Tab 1", Content = "First tab content" }); - TabItems.Add(new TabModel { Header = "Tab 2", Content = "Second tab content" }); - } +public class MainViewModel : NotificationObject +{ + public ObservableCollection TabItems { get; } = new ObservableCollection(); + + public MainViewModel() + { + TabItems.Add(new TabModel { Header = "Tab 1", Content = "First tab content" }); + TabItems.Add(new TabModel { Header = "Tab 2", Content = "Second tab content" }); + } } + {% endhighlight %} {% highlight XAML %} + - + - - - - - - - - - - - + + + + + + + + + {% endhighlight %} @@ -70,30 +72,60 @@ public class MainViewModel : NotificationObject { ![WPF TabbedWindow](data-binding_images/wpf_tabbedwindow.png) -## Customization of TabItems +## Tab Item Header + +You can define the tab item header by using the `HeaderTemplate` property in `ItemContainerStyle` or by using the `ItemTemplate` property. This keeps the header content bound to the underlying data object for each generated tab. + +{% tabs %} + +{% highlight XAML %} + + + + + + + + + + + +{% endhighlight %} + +{% endtabs %} -Use the ItemTemplate to control the visual presentation of each tab, defining separate templates for the tab header and tab content to enable flexible and reusable UI composition. +![WPF TabbedWindow](data-binding_images/wpf_tabbedwindow_header.png) + +## Tab Item Content + +You can define the tab item content by using the `ContentTemplate` property of [SfTabControl](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html). This allows the content area of each generated tab to display bound values from the data object. {% tabs %} {% highlight XAML %} - - - - - - + + + - - - + + + + + + + - {% endhighlight %} {% endtabs %} -![WPF TabbedWindow customization](data-binding_images/wpf_customization.png) +![WPF TabbedWindow](data-binding_images/wpf_tabbedwindow_contenttemplate.png) \ No newline at end of file diff --git a/wpf/Tabbed-Window/data-binding_images/wpf_customization.png b/wpf/Tabbed-Window/data-binding_images/wpf_customization.png deleted file mode 100644 index 952b1106bb05462646aa1917ac897fa7bc79f026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7530 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 diff --git a/wpf/Tabbed-Window/data-binding_images/wpf_tabbedwindow_contenttemplate.png b/wpf/Tabbed-Window/data-binding_images/wpf_tabbedwindow_contenttemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb1a14caed495b71e8db052bbabde8f87edd340 GIT binary patch literal 4648 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 literal 0 HcmV?d00001 diff --git a/wpf/Tabbed-Window/data-binding_images/wpf_tabbedwindow_header.png b/wpf/Tabbed-Window/data-binding_images/wpf_tabbedwindow_header.png new file mode 100644 index 0000000000000000000000000000000000000000..80a42f812a48894ff879ee44cc7d40ade8f1c430 GIT binary patch literal 4865 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 bGdY5iFEyozOhtjmR)B%7sZQBd=g0pAx0dLY literal 0 HcmV?d00001 diff --git a/wpf/Tabbed-Window/merge-tabs.md b/wpf/Tabbed-Window/merge-tabs.md index 295e29f673..a5978ef304 100644 --- a/wpf/Tabbed-Window/merge-tabs.md +++ b/wpf/Tabbed-Window/merge-tabs.md @@ -13,11 +13,11 @@ This section explains how to move tabs between tabbed windows and provides an ov ## Tear-Off Windows -The tabbed window interface supports tear-off functionality that allows tabs to be detached from an `SfTabControl` and displayed in independent floating windows. These floating windows can later be merged back into another tabbed window. +The tabbed window interface supports tear-off functionality that allows tabs to be detached from an [SfTabControl](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html) and displayed in independent floating windows. These floating windows can later be merged back into another tabbed window. ### Enable Tear-Off -You can use the `AllowDragDrop` property to enable tear-off support in `SfTabControl`. When drag-and-drop is enabled, a tab can be dragged outside the tab control boundary to create a floating window. The detached tab is moved into the new window automatically, and it can be reattached later by dragging it back into the tab area of another tabbed window. If a floating window becomes empty after a tab is moved out, it is closed automatically. +You can use the [AllowDragDrop](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html#Syncfusion_Windows_Controls_SfTabControl_AllowDragDrop) property to enable tear-off support in [SfTabControl](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html). When drag-and-drop is enabled, a tab can be dragged outside the tab control boundary to create a floating window. The detached tab is moved into the new window automatically, and it can be reattached later by dragging it back into the tab area of another tabbed window. If a floating window becomes empty after a tab is moved out, it is closed automatically. The floating window created through tear-off behaves like a regular tabbed window. It can be moved, resized, and minimized, and it supports the same tab features as the original window. @@ -44,7 +44,7 @@ The floating window created through tear-off behaves like a regular tabbed windo ## Control Tab Movement with PreviewTabMerge -You can use the `PreviewTabMerge` event to validate or cancel a tab merge operation before a tab is moved between tabbed windows. This event also allows you to modify the item that will be inserted into the target `SfTabControl`. +You can use the [PreviewTabMerge](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html#Syncfusion_Windows_Controls_SfTabControl_PreviewTabMerge) event to validate or cancel a tab merge operation before a tab is moved between tabbed windows. This event also allows you to modify the item that will be inserted into the target [SfTabControl](https://help.syncfusion.com/cr/wpf/Syncfusion.Windows.Controls.SfTabControl.html). {% tabs %}