c# - 使选项卡标题灵活地适应 WPF 上的标题文本

标签 c# .net wpf

我是 WPF 的新手,我尝试自己重新设计 TabItem。

enter image description here

如您所见,选项卡填满了窗口的整个宽度。与我最初的目的不同,我实际上想让标签宽度基于其中的文本。与原始样式一样,只是重新设计。

我的代码风格:

<Style x:Key="ZoidTab" TargetType="{x:Type TabItem}" >
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate x:Name="ZoidTemplate" TargetType="{x:Type TabItem}">
                <Border Width="Auto" Height="Auto">
                <Grid x:Name="grid">
                    <Polygon
                        Fill="Turquoise"
                        Points="0,1 0.05,0 0.95,0 1,1"
                        Stretch="Fill"
                        Margin="0,0,0,0"
                    />
                    <ContentPresenter x:Name="tabContent" HorizontalAlignment="Center" ContentSource="Header" VerticalAlignment="Center" TextElement.Foreground="#FFFFFFFF"/>
                </Grid>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="FontSize" Value="12pt"/>
</Style>

我想知道我必须修复什么才能获得正确的宽度...谢谢。

最佳答案

问题是您的 Grid 没有 ColumnDefinitions 部分来限制唯一一列的大小。将其修改为如下所示:

<Grid x:Name="grid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    ...

关于c# - 使选项卡标题灵活地适应 WPF 上的标题文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611161/

相关文章:

c# - 如何动态设置 ASP.net Listview LayoutTemplate 的样式?

c# - C# 中的高精度

c# - 在 Coldfusion 中加密并在 C# 中解密

c# - 我可以限制同时运行的 System.Threading.Tasks.Task 对象的数量吗?

c# - DataTable.Rows.InsertAt 不会接受 DataTable.Rows.Add 接受的新对象 []

c# - WPF响应式设计(液体布局)

c# - 如何提取通用/相似代码块以在 Visual Studio C# 中运行

.net - 从 .NET GC 的角度来看,在非托管代码中导致过早收集的事件顺序是什么?

c# - WPF 组合框 : Different template in textbox and drop-downlist

c# - WinForms 程序员的 WPF 是什么?