I avoided extending the designer by manipulating the layouts in design time directly in the UserControl class. The solution seems to work correctly in visual studio 2012 and 2013.
public class WorkspaceView : UserControl {
public RibbonTabItem RibbonTabItem { get; set; }
protected override void OnInitialized(EventArgs e) {
base.OnInitialized(e);
if (DesignerProperties.GetIsInDesignMode(this)) {
if (RibbonTabItem != null) {
UIElement content = this.Content as UIElement;
DockPanel panel = new DockPanel();
Content = panel;
Ribbon ribbon = new Ribbon();
ribbon.Tabs.Add(RibbonTabItem);
DockPanel.SetDock(ribbon, Dock.Top);
panel.Children.Add(ribbon);
if (content != null) {
panel.Children.Add(content);
DockPanel.SetDock(content, Dock.Bottom);
}
}
}
}
}