WPF:是否可以根据布局大小调整路径大小,但仍然可以拉伸它?

时间:2010-11-14 12:38:34

标签: wpf layout path stretch

我正在尝试设置TabItem标题的样式,使用路径来定义标题的形状。

我遇到了一个我似乎无法解决的问题:

如果我将路径Stretch属性设置为“None”,如果我的TabItem标题中的文本很长,它将无法缩放。

如果我将路径Stretch属性设置为“Fill”,它会拉伸太多,以至于每个TabItem标题将与TabControl的宽度相同 - 这意味着每行只有一个非常宽的TabItem标题...

您是否知道一种拉伸布局路径的方法(取决于TabItemHeader内容),但不是更多?

如果有人可以帮助我,我会很高兴...当我正在寻找解决方案时,这很烦人。

谢谢:-)

2 个答案:

答案 0 :(得分:5)

当您不添加任何示例代码但是说您的HeaderTemplate看起来如下所示时,您很难将路径的宽度绑定到TextBlock的ActualWidth。

<TabItem.HeaderTemplate>
    <DataTemplate>
        <Border x:Name="grid">
            <Grid>
                <Path Data="..."
                      Stretch="Fill"
                      Width="{Binding ElementName=grid, Path=ActualWidth}" />
                <TextBlock Name="textBlock"
                           Margin="4"
                           FontSize="15"
                           Text="{Binding}"/>                                
            </Grid>
        </Border>
    </DataTemplate>
</TabItem.HeaderTemplate>

答案 1 :(得分:1)

但请注意渲染性能!只要UI尚未输入,绑定到ActualWidth和ActualHeight将导致绑定错误。绑定错误很昂贵......避免这种情况的最佳方法是在调用SizeChanged时在代码中设置绑定。这是测量和尺寸测量完成后的第一个时刻。