3

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

我陷入了一个似乎无法解决的问题:

如果我将 path Stretch 属性设置为“None”,如果我的 TabItem Header 中的文本很长,它将不会缩放。

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

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

如果有人能帮我解决这个问题,我会非常高兴......当我在寻找解决方案时,这很烦人。

谢谢 :-)

4

2 回答 2

5

当您不添加任何示例代码但说您的 HeaderTemplate 如下所示时,这很难,然后您可以将路径的宽度绑定到 TextBlock 的实际宽度。

<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>
于 2010-11-14T17:00:27.873 回答
1

但要注意渲染性能!只要 UI 尚未完整呈现,绑定到 ActualWidth 和 ActualHeight 就会导致绑定错误。而且绑定错误代价高昂...避免这种情况的最佳方法是在调用 SizeChanged 时在代码中设置绑定。那是测量和调整尺寸完成后的第一刻。

于 2012-03-22T09:51:16.207 回答