我的tabitems有以下样式:
<Style x:Key="BoutonMenuHaut" TargetType="{x:Type TabItem}">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border Height="40" HorizontalAlignment="Stretch" CornerRadius="0" Name="border">
<Grid>
<ContentPresenterVerticalAlignment="Center"
HorizontalAlignment="Left"
TextBlock.Foreground="{StaticResource CouleurTexteBoutonsHaut}"
TextBlock.FontSize="{DynamicResource FontSizeBig}"
Name="textTab"
ContentSource="Header" Margin="10,0,60,0"
RecognizesAccessKey="True">
</ContentPresenter>
<Rectangle Height="2" x:Name="separation" Fill="Red" VerticalAlignment="Bottom" />
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
正如您所看到的,我将fontsize绑定到这样定义的值:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<sys:Double x:Key="FontSizeBig">16</sys:Double>
在window_sizechanged事件中,我这样做:
this.Resources["FontSizeBig"] = TextSizeFromResolution(12, height);
其中height是屏幕的高度。
但是当我调整窗口大小时,我的tabitem不会自行调整大小,而且我无法再看到页面中的所有标签了。
所以我的问题是:当大小改变时,如何强制tabcontrol调整tabitems的大小? (因为文本的大小已经改变,所以tabitem的宽度也应该改变。 我已经尝试过InvalidateMeasure,更新布局......但我无法让它工作。
你能帮帮我吗?
谢谢!
答案 0 :(得分:1)
您可以使用转换器将选项卡的宽度绑定到选项卡控件的ActualWidth:
<Style TargetType="TabItem">
<Setter Property="Width" Value="{Binding
Path=ActualWidth, Converter={StaticResource YourConverter},
RelativeSource={RelativeSource
FindAncestor, AncestorType={x:Type TabControl}}}"/>
</Style>