Category / Section
How to edit the document tab header via programmatically in WPF DockingManager?
1 min read
WPF DockingManager does not direct option to edit the tab header programmatically. But you can edit the header via programmatically by invoke the internal method “LabelEditStartInternal” of TabLayoutPanel. You are getting and invoke the same using reflection with corresponding tab item as argument to edit. The following code demonstrates the same.
Xaml
<syncfusion:DockingManager Name="docking" UseDocumentContainer="True" EnableDocumentTabHeaderEdit="True" DockFill="True" Grid.Row="1" > <!-- Custom Context Menu for editing the Header --> <syncfusion:DockingManager.DocumentTabItemContextMenuItems> <syncfusion:DocumentTabItemMenuItemCollection> <syncfusion:CustomMenuItem Header="Edit Header" x:Name="menu" IsCheckable="False" Click="CustomMenuItem_Click"/> </syncfusion:DocumentTabItemMenuItemCollection> </syncfusion:DockingManager.DocumentTabItemContextMenuItems> <!-- Document Window --> <ContentControl syncfusion:DockingManager.Header="Tab1" syncfusion:DockingManager.State="Document"/> <ContentControl syncfusion:DockingManager.Header="Tab2" syncfusion:DockingManager.State="Document"/> <ContentControl syncfusion:DockingManager.Header="Tab3" syncfusion:DockingManager.State="Document"/> <ContentControl syncfusion:DockingManager.Header="Tab4" syncfusion:DockingManager.State="Document"/> <ContentControl syncfusion:DockingManager.Header="Tab5" syncfusion:DockingManager.State="Document"/> </syncfusion:DockingManager>
C#
(docking.DocContainer as DocumentContainer).Loaded += DocumentContainer_Loaded; //Instance DocumentTabControl tabcontrol; TabLayoutPanel tab1; private void DocumentContainer_Loaded(object sender, RoutedEventArgs e) { tab1 = VisualUtils.FindDescendant(docking as Visual, typeof(TabLayoutPanel)) as TabLayoutPanel; tabcontrol = VisualUtils.FindDescendant(docking as Visual, typeof(DocumentTabControl)) as DocumentTabControl; } private void CustomMenuItem_Click(object sender, RoutedEventArgs e) { //For Edit Header MethodInfo method1 = tab1.GetType().GetMethod("LabelEditStartInternal", BindingFlags.NonPublic | BindingFlags.Instance); method1.Invoke(tab1, new object[] { tabcontrol.SelectedItem }); }