Вот пример
http://cid -a1de71e9f2ae2f82.office.live.com / self.aspx / .Public / ExtendedTabControl.zip
Это довольно простая задача... все, что вам нужно сделать, это создать копию шаблона по умолчанию и заменить System_Windows_Controls_Primitives:TabPanel x:Name="TabPanelTop"
на te:StockPanel x:Name="TabPanelTop"
, который в основном переопределяет логику макета ..
public class StockPanel: System.Windows.Controls.Primitives.TabPanel
{
protected override Size MeasureOverride(Size availableSize)
{
var cc = Children.Count;
foreach (var child in Children)
{
child.Measure(new Size(availableSize.Width / cc, availableSize.Height));
}
return base.MeasureOverride(availableSize);
}
protected override Size ArrangeOverride(Size finalSize)
{
var cc = Children.Count;
var i = 0;
foreach (var child in Children)
{
child.Arrange(new Rect((finalSize.Width / cc) * i, 0, finalSize.Width / cc, finalSize.Height));
i++;
}
return new Size(finalSize.Width, finalSize.Height);
}
}
PS: это не идеальнопример кода, но я думаю, что вы понимаете, как расширить TabControl