我有一个场景,我的应用程序右上角有两个按钮,我有一个选项卡控件横跨整个应用程序的屏幕。 (基本上这两个按钮与选项卡控件中的选项卡位于同一水平线上)。问题是当我打开多个选项卡时,按钮和选项卡重叠。我不想指定网格行/列号,以便按钮位于选项卡上方。
有什么方法可以指定Tab控件在自动启动第二行选项卡之前必须打开选项卡控件的某个区域吗?
换句话说,如果我的选项卡控件的宽度为 X,我如何才能告诉显示实际选项卡的区域它应该只占用比方说 x-15 的空间量。
谢谢!
最佳答案
您必须为 TabControl
提供 ControlTemplate
才能做到这一点。下面是一个示例,其中 100 像素保留在页眉面板的右侧:
<Grid>
<TabControl>
<TabControl.Template>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid KeyboardNavigation.TabNavigation="Local"
SnapsToDevicePixels="true"
ClipToBounds="true">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0"/>
<ColumnDefinition x:Name="ColumnDefinition1"
Width="100"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0"
Height="Auto"/>
<RowDefinition x:Name="RowDefinition1"
Height="*"/>
</Grid.RowDefinitions>
<TabPanel x:Name="HeaderPanel"
Panel.ZIndex ="1"
KeyboardNavigation.TabIndex="1"
Grid.Column="0"
Grid.Row="0"
Margin="2,2,2,0"
IsItemsHost="true"/>
<Border x:Name="ContentPanel"
Background="{TemplateBinding Background}"
BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{TemplateBinding BorderBrush}"
KeyboardNavigation.TabNavigation="Local"
KeyboardNavigation.DirectionalNavigation="Contained"
KeyboardNavigation.TabIndex="2"
Grid.Column="0"
Grid.Row="1"
Grid.ColumnSpan="2">
<ContentPresenter x:Name="PART_SelectedContentHost"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
Margin="{TemplateBinding Padding}"
ContentSource="SelectedContent"/>
</Border>
</Grid>
</ControlTemplate>
</TabControl.Template>
<TabItem Header="Item1"/>
<TabItem Header="Item2"/>
<TabItem Header="Item3"/>
<TabItem Header="Item4"/>
</TabControl>
</Grid>
调整窗口大小以查看效果。
关于wpf - 如何使 WPF 选项卡控件的选项卡区域小于控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4771051/