Заголовок Strech TabItem в Silverlight - PullRequest
1 голос
/ 25 мая 2011

Как заставить заголовки элементов вкладки растягиваться по ширине элемента управления вкладками в Silverlight?Если это имеет значение, у меня всегда есть фиксированное количество вкладок.

Я нашел только примеры WPF с IMultiValueConverter здесь .

1 Ответ

2 голосов
/ 25 мая 2011

Вот пример

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

...