第一个和最后一个TabControl项目标题的不同边框

时间:2012-01-30 15:00:20

标签: wpf header styles tabcontrol

我似乎错过了一些东西:我想要一个顶部有圆角的TabControl。因此,第一个和最后一个TabItem应该与其他TabItem不同。我可以使用样式设置所有TabItems的样式,但是我如何设置特别是第一个和最后一个TabItem / Header的样式?

读取TabControl.Items列表中的第一个和最后一个元素不起作用,因为可以将一个非TabItem控件(例如Button)添加到TabControl,然后将其写入TabControl.Items列表,从而可以不要转换为TabItem。如果我向TabControl添加一个Button,TabControl会自动创建一个TabItem,但我不知道如何访问它。

我希望这个问题是可以理解的...... 我很感激任何答案!

1 个答案:

答案 0 :(得分:0)

我使用“ItemContainerStyleSelector”解决了这个问题,它接收了我的TabControl的构造函数实例。然后它可以在SelectStyle方法中遍历它的父项,并将每个项与由制表符控件传递给它的项进行比较。它看起来像这样:

    public override Style SelectStyle(object item, DependencyObject container)
    {
        Style leftStyle = Application.Current.FindResource(Constants.TabItemLeftStyleKey) as Style;
        Style normalStyle = Application.Current.FindResource(Constants.TabItemNormalStyleKey) as Style;
        Style rightStyle = Application.Current.FindResource(Constants.TabItemRightStyleKey) as Style;

        if (item.Equals(this.parent.Items[0]))
        {
            return leftStyle;
        }
        else if (item.Equals(this.parent.Items[this.parent.Items.Count - 1]))
        {
            return rightStyle;
        }
        else
        {
            return normalStyle;
        }
    }
相关问题