WPF TabControl仅显示选项卡而不显示内容

3

这个想法是简单地利用标签(标题)来进行选择,所以“内容”是不必要的。而且我似乎找不到一种简单的方法来使内容“为空”或零高度。

因此,在视觉上,您应该只看到标签,没有其他东西。

4个回答

2

要隐藏选项卡的内容,您可以覆盖TabControl的ContentTemplate。

<TabControl>
    <TabControl.ContentTemplate>
         <DataTemplate/>
    </TabControl.ContentTemplate>
</TabControl>

我仍然在选项卡下面留有一个薄面板。 - Jiho Han

1

你能否根据MSDN示例自定义ControlTemplate并删除选定的内容:https://msdn.microsoft.com/en-us/library/ms754137(v=vs.90).aspx

这样它就会变成这样:

<Style  TargetType="{x:Type TabControl}">
  <Setter Property="OverridesDefaultStyle" Value="True" />
  <Setter Property="SnapsToDevicePixels" Value="True" />
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type TabControl}">
        <Grid KeyboardNavigation.TabNavigation="Local">
          <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
          </Grid.RowDefinitions>
          <TabPanel 
            Name="HeaderPanel"
            Grid.Row="0"
            Panel.ZIndex="1" 
            Margin="0,0,4,-1" 
            IsItemsHost="True"
            KeyboardNavigation.TabIndex="1"
            Background="Transparent" />
        </Grid>
        <ControlTemplate.Triggers>
          <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" />
          </Trigger>
        </ControlTemplate.Triggers>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

1
非常好用!谢谢! - Jiho Han
1
如果在扩展TabControl的控件上使用此样式,并使用DefaultStyleKeyProperty.OverrideMetadata,则可以删除行“<Setter Property =”OverridesDefaultStyle“ Value =”True“ />”,因为这会导致NullReferenceException。 - Victor Procure

0
另一种实现方法:
<TabControl Padding="0" BorderThickness="0">
    <TabControl.ContentTemplate>
        <DataTemplate>
            <Grid/>
        </DataTemplate>
    </TabControl.ContentTemplate>
</TabControl>

0

您可以使用重叠的标签形状按钮,而不一定需要选项卡控件。

这里是如何在WPF中创建自定义形状按钮的方法。

这里则是如何创建一个标签形状按钮的方法。


谢谢,但我想重用TabControl。我也一直在研究使用ToggleButtons样式的RadioButton。 - Jiho Han

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接