强制我的tabitem计算其宽度

时间:2015-04-20 15:25:34

标签: c# wpf

我的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,更新布局......但我无法让它工作。

你能帮帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用转换器将选项卡的宽度绑定到选项卡控件的ActualWidth:

          <Style TargetType="TabItem">
          <Setter Property="Width" Value="{Binding    
                  Path=ActualWidth,  Converter={StaticResource YourConverter},  
                 RelativeSource={RelativeSource   
                FindAncestor, AncestorType={x:Type TabControl}}}"/>
          </Style>