所以,我希望我的标签中的标签项水平居中。我还想更改选项卡背后的背景。我找到了这两个方面的答案:
This one explains exactly what I want to do for the background and gives a solution
This one explains how to center the tabItems
我遇到的问题是它们都是单独运作的,但是当它们结合起来时,它们就不起作用了。 tabItems中心很好,但背景颜色不是我指定的颜色。
E.g。代码:
<TabControl>
<TabControl.Resources>
<Style TargetType="{x:Type TabPanel}">
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="Background" Value="Red" />
</Style>
</TabControl.Resources>
<TabItem Header="Test 1" />
<TabItem Header="Test 2" />
<TabItem Header="Test 3" />
<TabItem Header="Test 4" />
</TabControl>
帮助?
答案 0 :(得分:10)
噢,这是一个发现问题的噩梦。问题在于tabcontrol使用的默认模板。
DefaultTemplate for TabControl
TabPanel本身设置为拉伸以外的东西不会填满网格中需要的东西。这就是背景没有显示的原因。
另一个问题是ContentPanel的背景是绑定到TabControl背景的模板。所以在挖掘之后我发现我可以覆盖构成带有背景的tabcontrol的网格的样式,它只会填满网格的第一行,因为第二行背景是模板绑定的。
希望通过查看默认模板,您应该能够看到我所看到的内容。
以下是它的实际代码
<TabControl>
<TabControl.Resources>
<Style TargetType="{x:Type Grid}">
<Setter Property="Background" Value="Red"/>
</Style>
<Style TargetType="{x:Type TabPanel}">
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</TabControl.Resources>
<TabItem Header="Test 1"/>
<TabItem Header="Test 2"/>
<TabItem Header="Test 3"/>
<TabItem Header="Test 4"/>
</TabControl>
这就是它应该是什么样子