bgh
bgh

Reputation: 2170

Xceed.Wpf.AvalonDock: Create tabbed panes programmatically

I'm trying to create two panes inside a tab bar programmatically using the following code:

var middlePanel = new LayoutPanel
{
    Orientation = Orientation.Vertical,
    DockHeight = new GridLength(250)
};
rootPanel.Children.Add(middlePanel);

var paneGroup = new LayoutAnchorablePaneGroup
{
    DockHeight = new GridLength(200)
};
middlePanel.Children.Add(new LayoutDocumentPane());
middlePanel.Children.Add(paneGroup);

var validationEditorPane = new LayoutAnchorablePane();
paneGroup.Children.Add(validationEditorPane);
validationEditorPane.Children.Add(new LayoutAnchorable { ContentId = "Validation", Title = "Validation" });

var searchEditorPane = new LayoutAnchorablePane();
paneGroup.Children.Add(searchEditorPane);
searchEditorPane.Children.Add(new LayoutAnchorable { ContentId = "Search", Title = "Search" });

However, the code above creates the two panes next to each other without tabs. During runtime I can drag the Search pane onto the Validation pane to move them into tabs. This suggests that it must be possible to achieve this programmatically, but I cannot see how.

Any suggestions?

Upvotes: 0

Views: 1013

Answers (1)

bgh
bgh

Reputation: 2170

This turned out to be easier than I thought. All I had to do was to add the LayoutAnchorables to the same LayoutAnchorablePane object:

var tabPane = new LayoutAnchorablePane();
paneGroup.Children.Add(tabPane);
tabPane.Children.Add(new LayoutAnchorable { ContentId = "Validation", Title = "Validation" });
tabPane.Children.Add(new LayoutAnchorable { ContentId = "Search", Title = "Search" });

Upvotes: 1

Related Questions